var imgCheckBoxOn = "images/checkbox_on.jpg";
var imgCheckBoxOff = "images/checkbox_off.jpg";

var imgRadioOn = "images/radio_on.jpg";
var imgRadioOff = "images/radio_off.jpg";

/**
 * Cette fonction permet d'initialiser les checkbox style mac dont la classe est "checkboxForm"
 */
function initCheckBoxes(){
	$(".checkboxForm IMG").click(handleClickOnCheckBox);
	
	$(".checkboxForm IMG").each(function(){
		if($(this).next("INPUT[type=hidden]").val() == 1)			
			$(this).attr("src", imgCheckBoxOn);
	});
}

function handleClickOnCheckBox(e){
	clickedCheckbox = $(e.target);
	
	if (clickedCheckbox.attr("src") == imgCheckBoxOn) {
		clickedCheckbox.attr("src", imgCheckBoxOff);
		clickedCheckbox.siblings("INPUT").val("");
	}
	else {
		clickedCheckbox.attr("src", imgCheckBoxOn);
		clickedCheckbox.siblings("INPUT").val(1);
	}
}

/**
 * Cette fonction permet d'initialiser les radios style mac dont la classe est "radioForm"
 */
function initRadios(){
	$(".radioForm IMG").click(handleClickOnRadio);
}

function handleClickOnRadio(e){
	clickedRadio = $(e.target);
	
	if (clickedRadio.attr("src") == imgRadioOff) {
		curNameRadio = clickedRadio.siblings("INPUT").attr('name');
		curValueRadio = clickedRadio.siblings("INPUT").attr('value');

		$('[name='+curNameRadio+']').each(function(){
			$(this).siblings("IMG").attr("src", imgRadioOff);
		});
		
		clickedRadio.attr("src", imgRadioOn);
		$('[name=radio_'+curNameRadio+']').val(curValueRadio);
	}
}

function initListesDeroulantes(){
	$(".selectSize1,.selectSize2,.selectSize3,.selectSize4").css({
		overflow: "hidden"
	});
	
	// Click sur l'un des select
	$(".selectSize1,.selectSize2,.selectSize3,.selectSize4").click(handleClickOnListeDeroulante);
	
	// Click dans la page
	$(document).click(function(e){
		// On récupère la classe de l'élément cliqué
		currentClass = $(e.target).attr('class');

		// On cache les listes déroulante qui ne sont pas cliquées
		hideBoxOption($(".selectSize1:not([class='"+currentClass+"'])").next(".boxOption"));
		hideBoxOption($(".selectSize2:not([class='"+currentClass+"'])").next(".boxOption"));
		hideBoxOption($(".selectSize3:not([class='"+currentClass+"'])").next(".boxOption"));
		hideBoxOption($(".selectSize4:not([class='"+currentClass+"'])").next(".boxOption"));
	});
	
	// On place les options
	$(".boxOption").each(setBoxOptionPosition);
	
	// Click sur un element de la liste déroulante
	$(".lineOption").click(handleClickOnOption);
}

function handleClickOnListeDeroulante(e){
	clickedListeDeroulante = $(e.target);
	
	if(clickedListeDeroulante.next(".boxOption:visible").length > 0){
		hideBoxOption(clickedListeDeroulante.next(".boxOption"));
	}
	else{		
		showBoxOption(clickedListeDeroulante.next(".boxOption"));
	}
}

function showBoxOption(boxOptionToShow){
	$(boxOptionToShow).slideDown(250, "easeOutExpo");
}

function hideBoxOption(boxOptionToHide){
	$(boxOptionToHide).slideUp(250, "easeOutExpo");
}

function setBoxOptionPosition(){
	// On recupere la position de la liste deroulante correspondante
	if ($.browser.msie && $.browser.version < 7) {
		listeDeroulanteOffset = $(this).prev().position();
	}
	else{
		listeDeroulanteOffset = $(this).prev().offset();
	}
	listeDroulanteHeight = $(this).prev().outerHeight();

	$(this).css({
		left:listeDeroulanteOffset.left,
		top:listeDeroulanteOffset.top+listeDroulanteHeight
	});
}

function handleClickOnOption(e){
	// On recupere la valeur
		// on récupère les infos de l'option cliquée
		curFieldHidden = $(e.target).find("INPUT[type=hidden]");
		curId = $(e.target).attr('id');
	// si l'option possède un champ hidden
	if (curFieldHidden.length > 0) {
		curVal = curFieldHidden.attr("value");
		curLib = $(e.target).html();
	}
	// sinon si l'option a un id
	else if(curId != ''){
		var reg = new RegExp('.*_option_');
		curVal = curId.replace(reg,'');
		curLib = $(e.target).html();
	}
	else {
		curVal = $(e.target).html();
		curLib = curVal;
	}

	// On la met dans le hidden
	$(e.target).siblings("INPUT[type='hidden']").val(curVal);
	
	// On le met en lib
	$(e.target).parent().prev().html(curLib);
	
	// On cache le boxOption
	hideBoxOption($(e.target).parent());
	
	// On lance l'evenement de changement
	$(e.target).parent().prev().trigger("change");
	$(e.target).siblings("INPUT[type='hidden']").trigger("change");
}
