$(document).ready(function(){
	function changeQte(){ var groupVar = groupeChange[0].className.split(' ')[0]; $("select."+groupVar).change(); $("input:checked."+groupVar).change(); 	}
	function invalid( idTemp ){ for (var i in liaisonVar[idTemp]) { for (var j in liaisonVar[idTemp][i]) { detailVar[liaisonVar[idTemp][i][j]]['etat'] = false; } } }
	function msgalert(msg,txt){
		if(txt !== false) msg=msg.replace(/%s/,txt);
		if ($('#basicModal').length == 0) 
			$('body').append('<div id="basicModal" style="display: none;"><p>' + msg + '</p></div>');
		else 
			$('#basicModal').html('<p>' + msg + '</p>');
		$('#basicModal').modal();
	}
	function change(){
		montant = optionVar['base']['prix'];
		nbstock = optionVar['base']['stock'];
		nbProd =  parseInt($('#' + optionVar['id']['nbprod'])[0].value,10);
		stock = true;
		nbunite = {};
		for (var i in speVar) { nbunite[i] = 0; }
		for (var i in detailVar) {
			if(  detailVar[i]['etat'] && detailVar[i]['actif'] ){
				if ( optionVar['stock']['gest'] && detailVar[i]['stock'] !== false ) {
					if( nbProd *  detailVar[i]['qte']['val'] > detailVar[i]['stock'] ){
						stock = false;
					}
					if( detailVar[i]['qte']['val']!=0 && (detailVar[i]['stock'] / detailVar[i]['qte']['val']) < nbstock || nbstock === false ){
						nbstock = Math.floor(detailVar[i]['stock'] / detailVar[i]['qte']['val']);
					}
				}
				if ( optionVar['stock']['gest'] && detailVar[i]['unite'] !== false ) {
					nbunite[detailVar[i]['variation']] = nbunite[detailVar[i]['variation']] + (detailVar[i]['unite'] * detailVar[i]['qte']['val']);
				} 
				montant += detailVar[i]['prix'] * detailVar[i]['qte']['val'];
			}
		}
		for (var i in speVar) { 
			if (speVar[i]['global'] != false) {
				if (nbunite[i] == 0) {
					nbstock = 0;
				} else	if ((speVar[i]['global'] / nbunite[i]) < nbstock || nbstock === false) {
					nbstock = Math.floor(speVar[i]['global'] / nbunite[i]);
				}
			}
		}
		montant = montant * nbProd;
		$('.'+optionVar['class']['prix']).html(formatPrix(montant));
		if (optionVar['stock']['indic']) {
			if (nbstock == 0) {
				$('.' + optionVar['class']['stock']).html(optionVar['stock']['epuise']);
			}
			else if( nbstock == 1 ) {
				$('.' + optionVar['class']['stock']).html(optionVar['stock']['un']);
			}
			else {
				$('.' + optionVar['class']['stock']).html(optionVar['stock']['x'].replace(/%s/gi,nbstock));
			}
		} else {
			if (stock) {
				$('.' + optionVar['class']['stock']).html(optionVar['stock']['ok']);
			}
			else {
				$('.' + optionVar['class']['stock']).html(optionVar['stock']['epuise']);
			}
		}
	}
	$(".choixVariation").change(function() {
		var element = $(this);
		var groupVar = element[0].className.split(' ')[0].replace('groupVariation','');
		var idVar = element[0].name.split('[')[1].replace(']','');
		var typeVar = element.hasClass('comboBoxHidden') ? 'select-one' : element[0].type;
		var valVar = element[0].value;
		var tab = false;
		var ok = true;
		var elQt = $('#qte-'+ idVar+'-'+valVar);
		if (elQt.length == 0) { elQt = $('#qte-'+ idVar); if (elQt.length == 0) { elQt = $('#qte-' + idVar.split('-')[0]); } }
		
		var qtVar = 1;	
		if (elQt.length > 0) {
			if (!isNaN(parseInt(elQt[0].value))) 
				qtVar = parseInt(elQt[0].value);
			if(elQt[0].value != '')
				elQt[0].value = qtVar;
			else
				qtVar = 0;
		}
		switch(typeVar)
	    {
			case "select-one" :
			case "radio" :
				if(  typeVar == "select-one" || element[0].checked){
					if (typeVar == "select-one") {
						var allVar = $('select.groupVariation' + groupVar);
						if (valVar == -1) {
							$('select.groupVariation' + groupVar + " option[value='-1']").attr('selected', 'selected');
							$('.imgVariation.groupVariation' + groupVar).css('display', 'none');
							$('.urlImgVariation.groupVariation' + groupVar).css('display', 'none');
						}
					} else {
						var allVar = $('.groupVariation' + groupVar + '[type=\'radio\']:checked');
					}						
					allVar.each(
						function(){
								var idTemp = this.name.split('[')[1].replace(']','');
								if( typeVar == "radio" ) var valTemp = this.value;
								else var valTemp = this.options[this.options.selectedIndex].value;
								invalid( idTemp );
								if( valTemp == -1 && elQt.length > 0) $(elQt[0].parentNode).css('display','none')
								if( !tab ){ tab = liaisonVar[idTemp][valTemp]; }
								var tab2 = [];
								for( var i in liaisonVar[idTemp][valTemp] ){ for (var j in tab) { if( liaisonVar[idTemp][valTemp][i] == tab[j] ) tab2 = tab2.concat([tab[j]]); } }
								tab = tab2;
						}
					);
					if (valVar != -1 && tab.length > 0) {
						detailVar[tab[0]]['etat'] = true;
						detailVar[tab[0]]['qte']['val'] = qtVar;
						if(detailVar[tab[0]]['qte']['gest'] && qtVar > detailVar[tab[0]]['qte']['max']){
							elQt[0].value = qtVar = detailVar[tab[0]]['qte']['val'] = detailVar[tab[0]]['qte']['max'];
							msgalert(optionVar['qte']['max'],qtVar);
						}else if(detailVar[tab[0]]['qte']['gest'] && qtVar < detailVar[tab[0]]['qte']['min']){
							elQt[0].value = qtVar = detailVar[tab[0]]['qte']['val'] = detailVar[tab[0]]['qte']['min'];
							msgalert(optionVar['qte']['min'],qtVar);
						}
					}
				}
				if (tab.length > 0 && typeVar == "select-one" && detailVar[tab[0]]['img']['50'] !== false) {
						$('.imgVariation.groupVariation' + groupVar).attr('src', detailVar[tab[0]]['img'][optionVar['img']['taille']]).css('display', '');
						$('.urlImgVariation.groupVariation' + groupVar).attr('href', detailVar[tab[0]]['img']['max']).css('display', '');
				}
			break;
			default :
				
				var nbSel = $("input[type=checkbox]:checked.choixVariation.groupVariation"+groupVar).length;
				if (speVar[groupVar]['multi']['min'] !== false && nbSel < speVar[groupVar]['multi']['min']) {
					msgalert(optionVar['multi']['min'], speVar[groupVar]['multi']['min']);
					ok = false;
				}
				if (speVar[groupVar]['multi']['max'] !== false && nbSel > speVar[groupVar]['multi']['max']) {
					msgalert(optionVar['multi']['max'], speVar[groupVar]['multi']['max']);
					ok = false;
				}
				if( ok ){
					var idTemp = element[0].name.split('[')[1].replace(']','');
					var valTemp = element.val();
					tab = liaisonVar[idTemp][valTemp];
					if (valVar != -1 && tab.length > 0) {
						detailVar[tab[0]]['etat'] =  element[0].checked;
						detailVar[tab[0]]['qte']['val'] = qtVar;
						if(detailVar[tab[0]]['qte']['gest'] && qtVar > detailVar[tab[0]]['qte']['max']){
							elQt[0].value = qtVar = detailVar[tab[0]]['qte']['val'] = detailVar[tab[0]]['qte']['max'];
							msgalert(optionVar['qte']['max'],qtVar);
						}else if(detailVar[tab[0]]['qte']['gest'] && qtVar < detailVar[tab[0]]['qte']['min']){
							elQt[0].value = qtVar = detailVar[tab[0]]['qte']['val'] = detailVar[tab[0]]['qte']['min'];
							msgalert(optionVar['qte']['min'],qtVar);
						}
					}
				} else {
					if(element[0].checked) element.attr('checked', '');
					else element.attr('checked', 'checked');
				}
	    } 
		if( ok ) {
			$(".qtVariation.radio.groupVariation"+groupVar).each( function(){ $($(this)[0].parentNode).css('display','none') } );
			if (elQt.length > 0) {
				if( valVar == -1 || (typeVar == 'checkbox' && !element[0].checked))
					$(elQt[0].parentNode).css('display','none')
				else if( tab.length > 0 )
					$(elQt[0].parentNode).css('display','')
			}
			change();
		}
	});

		
	function formatPrix($nb) {
		return optionVar['devise']['pre'] + number_format($nb, optionVar['devise']['arrondi'], optionVar['devise']['point'], optionVar['devise']['milier']) + optionVar['devise']['post'];
	}
	var timer = null;
	var groupeChange = null;
	$(".qtVariation").keyup(function() { clearTimeout(timer); groupeChange = $(this); timer = setTimeout(changeQte,800); });
	$(".qtVariation").blur(function() { clearTimeout(timer); groupeChange = $(this); changeQte() });
	$('#' + optionVar['id']['nbprod']).blur(function() { clearTimeout(timer); timer = setTimeout(change,800); });
	$('#' + optionVar['id']['nbprod']).keyup(function() { clearTimeout(timer); change(); });
	change();
});
