
var rules = new Array;
// Screen 1
rules['s1l3i1'] = {'rule':'^[0-9]{2,3}$', 'min':10, 'max':1000, 'err':'Pour obtenir un résultat vous devez nous indiquer la surface en m2'};
rules['s1l4i1'] = {'rule':'^[0-9]{2}$', 'min':1, 'max':95, 'err':'Pour obtenir un résultat, vous devez nous indiquer le département où aura lieu le projet'};//Dept
rules['s1l7i1'] = {'value':'11', 'required':'s1l7i2'};

// Screen Solp
rules['ssolpl1i1'] = {'rule':'^[0-9]{2,3}$', 'min':10, 'max':1000, 'err':'Pour obtenir un résultat vous devez nous indiquer la surface en m2'};//m²
rules['ssolpl6i1'] = {'rule':'^[0-9]{0,5}$', 'min':0, 'max':100000}; //€
rules['ssolpl7i1'] = {'value':'512', 'required':'ssolpl7i2'};//Contrainte
rules['ssolpl8i1'] = {'value':'515', 'required':'ssolpl8i2'};//Contrainte

// Screen Solt
rules['ssoltl2i1'] = {'rule':'^[0-9]{1,2}$', 'min':0, 'max':40, 'err':'Pour obtenir un résultat vous devez nous indiquer le taux de couverture de votre consommation de chauffage (max 40%)'};//%
rules['ssoltl3i1'] = {'rule':'^[0-9]{1,2}$', 'min':0, 'max':65, 'err':'Pour obtenir un résultat vous devez nous indiquer le taux de couverture de votre consommation d\'eau chaude (max 65%)'};//%

// Screen PAC
rules['spacl8i1'] = {'value':'200a', 'required':'spacl1i1'};//Contrainte
rules['spacl5i1'] = {'rule':'^[0-9]{0,5}$', 'min':0, 'max':100000}; //€
rules['spacl6i1'] = {'value':'213', 'required':'spacl6i2'};//Contrainte
rules['spacl7i1'] = {'value':'216', 'required':'spacl7i2'};//Contrainte

// Screen Bois
rules['sboisl2i1'] = {'value':'108', 'required':'sboisl2i2'};//Contrainte
rules['sboisl4i1'] = {'rule':'^[0-9]{0,5}$', 'min':0, 'max':100000}; //€
rules['sboisl5i1'] = {'value':'113', 'required':'sboisl5i2'};//Contrainte
rules['sboisl6i1'] = {'value':'116', 'required':'sboisl6i2'};//Contrainte

// Screen eol
rules['seoll1i0'] = {'rule':'^[0-9]{0,5}$', 'min':0, 'max':100}; // KW
rules['seoll1i0'] = {'value':'401', 'required':'seoll1i1'};//Contrainte
rules['seoll2i1'] = {'value':'404', 'required':'seoll2i2'};//Contrainte
rules['seoll7i1'] = {'rule':'^[0-9]{0,5}$', 'min':0, 'max':100000}; //€
rules['seoll7i1'] = {'value':'411', 'required':'seoll7i2'};//Contrainte
rules['seoll8i1'] = {'value':'414', 'required':'seoll8i2'};//Contrainte

var rulesConstraint = new Array;
// Screen 1
rulesConstraint['s1l7i2'] = {'rule':'^[0-9]{1,5}$', 'min':1, 'max':100000, 'err':'Vous devez indiquer le montant du crédit d\'impôt'}; //€

// Screen Solp
rulesConstraint['ssolpl7i2'] = {'rule':'^[0-9]{1,5}$', 'min':1, 'max':100000, 'err':'Montant de l\'entretient manquant'}; //€
rulesConstraint['ssolpl8i2'] = {'rule':'^[0-9]{1,5}$', 'min':1, 'max':100000, 'err':'Montant de l\'assurance manquant'}; //€

// Screen Solt
rulesConstraint['ssoltl7i2'] = {'rule':'^[0-9]{1,5}$', 'min':1, 'max':100000, 'err':'Montant de l\'entretient manquant'}; //€
rulesConstraint['ssoltl8i2'] = {'rule':'^[0-9]{1,5}$', 'min':1, 'max':100000, 'err':'Montant de l\'assurance manquant'}; //€

// Screen PAC
rulesConstraint['spacl1i1'] = {'rule':'^[0-9]{2,3}$', 'min':10, 'max':'s1l3i1'};//m²
rulesConstraint['spacl6i2'] = {'rule':'^[0-9]{1,5}$', 'min':1, 'max':100000, 'err':'Montant de l\'entretient manquant'}; //€
rulesConstraint['spacl7i2'] = {'rule':'^[0-9]{1,5}$', 'min':1, 'max':100000, 'err':'Montant de l\'assurance manquant'}; //€

// Screen Bois
rulesConstraint['sboisl2i2'] = {'rule':'^[0-9]{1,5}$', 'min':1, 'max':100}; //€
rulesConstraint['sboisl5i2'] = {'rule':'^[0-9]{1,5}$', 'min':1, 'max':100000, 'err':'Montant de l\'entretient manquant'}; //€
rulesConstraint['sboisl6i2'] = {'rule':'^[0-9]{1,5}$', 'min':1, 'max':100000, 'err':'Montant de l\'assurance manquant'}; //€

// Screen Eol
rulesConstraint['seoll1i1'] = {'rule':'^[0-9]{1,5}$', 'min':1, 'max':100, 'err':'Pour obtenir un résultat vous devez nous indiquer la puissance de l\'eolienne'}; // KW
rulesConstraint['seoll2i2'] = {'rule':'^[0-9]{1,3}$', 'min':1, 'max':100, 'err':'Pour obtenir un résultat vous devez nous indiquer le taux de couverture de vos besoins'}; //%
rulesConstraint['seoll7i2'] = {'rule':'^[0-9]{1,5}$', 'min':1, 'max':100000, 'err':'Montant de l\'entretient manquant'}; //€
rulesConstraint['seoll8i2'] = {'rule':'^[0-9]{1,5}$', 'min':1, 'max':100000, 'err':'Montant de l\'assurance manquant'}; //€

function check()
{
	var errCpt = 0;
	clearError();
	
	$('#frmSimulateur :input').each(function(){
		var name 	= $(this).attr('name');
		var value 	= $(this).val();
		
		if(rules[name] != null){
			// Regexp
			if(rules[name]['rule'] != null){
				var regExp	= new RegExp(rules[name]['rule'], 'g');
				if(false == regExp.test(value)){
					errCpt++;
					addError(rules[name]['err']);
					$(this).addClass('error');
					return;
				}
			}
	
			// Borne Inférieur
			if(rules[name]['min'] != null){
				if(value < rules[name]['min']){
					errCpt++;
					addError(rules[name]['err']);
					$(this).addClass('error');
					return;
				}
			}
	
			// Borne Supérieur
			if(rules[name]['max'] != null){
				maxval = rules[name]['max'];
				if (!(!isNaN(parseFloat(maxval)) && isFinite(maxval))) {
					maxval = $('input[name='+rules[name]['max']+']').val();
				}
				if(value > maxval){
					errCpt++;
					addError(rules[name]['err']);
					$(this).addClass('error');
					return;
				}
			}
			
			// Contrainte relationnelle
			if(rules[name]['required'] != null){
				if( ($(this).attr('type') == 'radio' 
						&& $(this).attr('checked') == true 
						&& value == rules[name]['value'])
					||
						($(this).attr('type') == 'text'
						&& value == rules[name]['value'])
					){
					var name 	= rules[name]['required'];
					var field	= $('input@[name="' + name + '"]');
					var value 	= $(field).val();
	
					// Regexp
					if(rulesConstraint[name]['rule'] != null){
						var regExp	= new RegExp(rulesConstraint[name]['rule'], 'g');
						if(false == regExp.test(value)){
							errCpt++;
							addError(rulesConstraint[name]['err']);
							$(field).addClass('error');
							return;
						}
					}
		
					// Borne Inférieur
					if(rulesConstraint[name]['min'] != null){
						if(value < rulesConstraint[name]['min']){
							errCpt++;
							addError(rulesConstraint[name]['err']);
							$(field).addClass('error');
							return;
						}
					}
		
					// Borne Supérieur
					if(rulesConstraint[name]['max'] != null){
						maxval = rulesConstraint[name]['max'];
						if (!(!isNaN(parseFloat(maxval)) && isFinite(maxval))) {
							maxval = $('input[name='+rulesConstraint[name]['max']+']').val();
						}
						if(value > maxval){
							errCpt++;
							addError(rulesConstraint[name]['err']);
							$(field).addClass('error');
							return;
						}
					}
				}
			}
		}
	});
	
	if (errCpt > 0) {
		$(':input.error:first').focus();
		return false;
	}
	
	return true;
}

function addError(msg)
{
	if (msg != null) {
		$('#bloc_erreur').show();
		$('#liste_erreur').append(msg+'<br/>');
	}
}
function clearError()
{
	$('#bloc_erreur').hide();
	$('#liste_erreur').empty();
	$(':input.error').removeClass('error');
}

$(document).ready(function(){
	$('a.update').click(function(){
		$('#screen').val(1);
		$('#action').val('update');
        
        //$('#frmSimulateur').attr('action', $(this).attr('rel'));
		$('#frmSimulateur').submit();
		return false;
	});
	$('a.new').click(function(){
		$('#screen').val(1);
		$('#action').val('new');
        
        //$('#frmSimulateur').attr('action', $(this).attr('rel'));
		$('#frmSimulateur').submit();
		return false;
	});
});
