
var valeur_defaut = ["N° et libellé de voie","Tel. mobile","Tel. fixe","Nom","Prénom","JJ/MM/AAAA","Nom*","Prénom*","JJ/MM/AAAA*","CPostal*","Ville*","Adresse e-mail*"];
var alert_msg     = {"p_civilite":"Votre civilité est obligatoire","p_civilite_alt":"Vous devez nous donner la civilité de votre conjoint(e)","p_name":"Le nom de l'assuré principal est obligatoire.","p_email":"L'adresse e-mail de l'assuré principal est absente ou invalide.","p_firstname":"Le prénom de l'assuré principal est obligatoire.","p_birth":"La date de naissance de l'assuré principal est obligatoire.","p_adr1":"Le champ Adresse est obligatoire","p_fixe":"Veuillez remplir le champ Téléphone","p_adr_cp":"Le code postal de l'assuré principal est obligatoire.","p_adr_city":"La ville de l'assuré principal est obligatoire.","p_births":"Veuillez bien vérifier toutes les dates de naissance que vous avez renseignées.","p_support":"Vous devez choisir au moins un support d'envoi de votre devis.","p_formules":"Vous devez choisir au moins une formule.","email":"Veuillez vérifier l'adresse e-mail de l'assuré principal.","p_alt":"Veuillez remplir tous les champs correspondant au conjoint.","p_child":"Pour chaque enfants, veuillez remplir tous les champs nécessaire.","trop_long":"Ce champs est trop long, il doit contenir %%MAX%% caractères au maximum.","same_name":"Les coordonnées de votre conjoint sont identiques aux vôtres. Veuillez les modifier.","same_child_name":"Les coordonnées de vos enfants sont identiques entre eux. Veuillez les modifier.","child_too_old":"Les enfants de 18 ans ou plus doivent faire l'objet d'un devis séparé. Appelez-nous pour connaître les formules les plus adaptées à votre famille.","too_old":"Veuillez entrer une date de naissance valide.","too_young":"Nos formules sont réservées aux assurés principaux de 18 ans ou plus.","too_young_for_senior":"Nos formules Senior sont réservées aux assurés à partir de 60 ans. Nous vous recommandons nos formules économique ou renforcées pour tous.","alt_too_young":"Nos formules sont réservées aux assurés conjoint de 18 ans ou plus.","too_old_or_too_young":"Les formules Jeunes sont réservées aux assurés entre 18 et 28 ans. Nous vous recommandons nos formules économique ou renforcées.","more_than_tree_childs":"Si vous avez plus de 3 enfants, merci de nous contacter","child_not_born":"Nous ne pouvons établir de devis en ligne pour votre enfant à naître. Appelez-nous pour connaître les formules les plus adaptées à votre cas."};
var thx_msg       = {"mail":"Merci de votre intérêt pour Les Ménages Prévoyants. Vous allez recevoir d'ici quelques minutes toutes les informations relatives à votre devis par e-mail.","courrier":"Merci de votre intérêt pour les Ménages Prévoyants. Vous allez recevoir d'ici quelques jours toutes les informations relatives à votre devis par courrier.","mail_courrier":"Merci de votre intérêt pour les Ménages Prévoyants. Vous allez recevoir d'ici quelques minutes toutes les informations relatives à votre devis par e-mail et d'ici quelques jours par courrier."};
var notre_temp    = ["Notre Temps dans son dossier « Vos droits, votre argent » du mois d'avril 2007 passe au banc d'essai 20 contrats du marché.","La Mutuelle Les Ménages Prévoyants se distingue par un avis à chaque fois très favorable :","- Pour la formule « Base » :"," « Parmi les moins chers de l'enquête. Sans augmentation des cotisations avec l'âge. Un très bon niveau de remboursement de l'optique et des appareils auditifs. Bon contrat. »","- Pour la formule « Option + » :","« Le meilleur niveau de prestations pour un prix en haut de la fourchette mais justifié. Sans augmentation de cotisations avec l'âge. Très bon contrat. »"];
var coords        = ["doc/img/title-popup-coordonees.png","Siége social: 11 rue Albert Sarraut","78 000 VERSAILLES","Téléphone : 01.39.24.60.00","Télécopie : 01.39.24.60.39","E-mail : accueil@menages-prevoyants.fr","Cliquez-ici",", pour accéder à notre site institutionnel."];
var nb_max_chars  = {"p_name":30,"p_firstname":30,"p_email":60,"p_adr_cp":5,"p_name_alt":30,"p_firstname_alt":30,"p_child_name[]":30,"p_child_firstname[]":30,"p_adr1":38,"p_adr2":38,"p_adr_city":38,"p_mob":10,"p_fixe":10};



function init() {
  $A($$('input')).each(function(node){
    if(node.type == 'text') {
      node.onfocus = function (t) {
	this.style.backgroundImage = "url(doc/img/input-bckgrd.png)";
	this.value = '';
	this.style.color = 'black'
      };
      node.onblur  = function (t) {this.style.backgroundImage = "none";};
    }
    if(node.name == "p_adr_cp") node.onkeypress = function (e) {
      key =  (window.event && event.keyCode) || e.which;
      if(key == Event.KEY_BACKSPACE || key == 0) return true;
      if (key < 48 || key > 57 || this.value.length >= 5) return false;
    }
    if(node.name == "p_fixe" || node.name == "p_mob") node.onkeypress = function (e) {
      key =  (window.event && event.keyCode) || e.which;
      if(key == Event.KEY_BACKSPACE || key == 0) return true;
      if (key < 48 || key > 57 || this.value.length >= 10) return false;
    }
  });
  if($('nb_childs')) $('nb_childs').value = 2;
  var i = 1, j = 0, right = 1, left  = -1, dst = 194;
  if($A($$('div#content div.encart img')).length == 2) {
    new PeriodicalExecuter(function() {
      $A($$('div#content div.encart img')).each(function(node) {
        node.baseLeft = ++j%2!=0 ? (i%2==0 ? 0 : dst) : (i%2==0 ? -dst : 0);
        move(i%2==0?left:right,node,2,function(speed){return speed*1.25;});
      });
      ++i;
    },5);
  } else if($A($$('div#content img.alt')).length == 1) {
    new PeriodicalExecuter(function() {
      $A($$('div#content img.alt')).each(function(node) {
        if(!node.style.opacity) node.style.opacity = 0;
        else node.style.opacity *= 1;
        appear((++i%3==0),node,0.05,function(speed){return speed*1.1;});
      });
    },5);
  } else if($('devis_form')) {
    $('devis_form').onsubmit = function() {
      var ret = true;
      var name = {child:[],alt:'',princ:''};
      var firstname = {child:[],alt:'',princ:''};
      var comp = [];
      $A($$('form#devis_form input, form#devis_form select')).each(function(node) {
        if(!node.className.match(/obl/) && valeur_defaut.detect(function(value,index){ return node.value == value;})) node.value = '';
	if(node.className.match(/obl/) && (node.value == '' || valeur_defaut.detect(function(value,index){ return node.value == value;})) && ret) {
          node.focus();
          alert(alert_msg[node.name]);
          ret = false;
        }
        if(node.className.match(/nom/) && !node.className.match(/prenom/) && node.className.match(/alt/) && node.value != '') name.alt = node.value;
	if(node.className.match(/nom/) && !node.className.match(/prenom/) && node.className.match(/princ/) && node.value != '') name.princ = node.value;
	if(node.className.match(/nom/) && !node.className.match(/prenom/) && node.className.match(/child/) && node.value != '') name.child.push(node.value);
	if(node.className.match(/prenom/) && node.className.match(/alt/) && node.value != '') firstname.alt = node.value;
	if(node.className.match(/prenom/) && node.className.match(/princ/) && node.value != '') firstname.princ = node.value;
	if(node.className.match(/prenom/) && node.className.match(/child/) && node.value != '') firstname.child.push(node.value);
      });
      if (!ret) return false;
      if (!name.alt.empty() && !firstname.alt.empty() && $('p_civilite_alt').value.empty()) {
        alert(alert_msg['p_civilite_alt']);
        return false;
      }
      if (name.alt + ' ' + firstname.alt == name.princ + ' ' + firstname.princ ) {
        alert(alert_msg['same_name']);
        return false;
      }
      name.child.each(function (value,index) {
        if(!ret) return;
        comp.push((value + ' ' + firstname.child[index]).capitalize());
        if(comp.uniq().inspect() != comp.inspect()) (ret = false) || alert(alert_msg['same_child_name']);
      });
      if(!ret) return false;
      $A($$('form#devis_form input')).each(function(node) {
        var max = nb_max_chars[node.name];
        if(node.value.length <= max || typeof max == 'undefined' || !ret) return;
        alert(alert_msg['trop_long'].replace('%%MAX%%',max));
        var tmp = node.onfocus;
        node.onfocus = function() {};
        node.style.backgroundImage = "url(doc/img/input-bckgrd.png)";
        node.focus();
        node.onfocus = tmp;
        ret = false;
      });
      if(!ret) return false;
      $A($$('form#devis_form input.birth')).each(function(node) {
        if(!ret) return;
        if(node.value == 'JJ/MM/AAAA') node.value = '';
        if(ret && node.value != '') {
          var date = node.value.split('/');
          date[0]=date[0]*1;
          date[1]=date[1]*1;
          date[2]=date[2]*1;
          if(isNaN(date[0]) || date[0] > 32   || date[0] < 0) (ret = false) || alert(alert_msg['p_births']);
          if(isNaN(date[1]) || date[1] > 13   || date[1] < 0) (ret = false) || alert(alert_msg['p_births']);
          if(isNaN(date[2]) || date[2] < 1887 || date[2] > new Date().getFullYear()) (ret = false) || alert(alert_msg['p_births']);
	  if(ret) {
	    var d = new Date();
	    d.setFullYear(new Date().getFullYear() - date[2]);
	    d.setMonth(new Date().getMonth() - date[1] + 1);
	    d.setDate(new Date().getDate() - date[0]);
	    if(d.getFullYear() >= 18 && node.className.match(/child/)) (ret = false) || alert(alert_msg['child_too_old']);
	    if(d.getFullYear() < 18 && node.className.match(/alt/)) (ret = false) || alert(alert_msg['alt_too_young']);
	    if(d.getFullYear() < 18 && node.className.match(/princ/)) (ret = false) || alert(alert_msg['too_young']);
	    if(d.getFullYear() > 120 && node.className.match(/princ/)) (ret = false) || alert(alert_msg['too_old']);
	    if(d.getFullYear() > 120 && node.className.match(/alt/)) (ret = false) || alert(alert_msg['too_old']);
	    if(d.getFullYear() < 0 && node.className.match(/child/)) (ret = false) || alert(alert_msg['child_not_born']);
	  }
	  if(!ret) {
            var tmp = node.onfocus;
            node.onfocus = function() {};
            node.style.backgroundImage = "url(doc/img/input-bckgrd.png)";
            node.focus();
            node.onfocus = tmp;
          }
        }
      });
      if (!ret) return false;
      if (($F('p_name_alt') != '' || $F('p_birth_alt') != '' || $F('p_firstname_alt') != '') && ($F('p_name_alt') == '' || $F('p_birth_alt') == '' || $F('p_firstname_alt') == '')) {
        alert(alert_msg['p_alt']);
        return false;
      }
      var childs_name = $A(document.getElementsByName('p_child_name[]'));
      var childs_firstname = $A(document.getElementsByName('p_child_firstname[]'));
      var childs_birth = $A(document.getElementsByName('p_child_birth[]'));
      var childs_civilite = $A(document.getElementsByName('p_civilite_child[]'));
      for(var k in childs_name) {
        //if(typeof childs_name == 'function') continue;
        var name  = childs_name[k].value;
        var fname = childs_firstname[k].value;
        var birth = childs_birth[k].value;
        var civilite = childs_civilite[k].value;
        if ((name != '' || fname != '' || birth != '' || civilite != '') && (name == '' || fname == '' || birth == '' || civilite == '')) {
          alert(alert_msg['p_child']);
          return false;
        }
      }
      if(!is_valid_email($F('p_email'))) {
        alert(alert_msg['p_email']);
        return false;
      }
      return true;
      //confirm('Êtes-vous sûre des informations que vous venez de renseigner ?');
    }
  }
}

function is_valid_email(email) { 
  var reg = /^[a-z0-9._-]+@[a-z0-9.-]{2,}[.][a-z]{2,4}$/;
  return reg.exec(email);
}

function move(side,elm,speed,callback) {
  if(side == 1) {if((elm.offsetLeft+speed) < elm.baseLeft) elm.style.left = (elm.offsetLeft+speed) + 'px'; else return elm.style.left = elm.baseLeft+"px";}
  else {if((elm.offsetLeft-speed) > elm.baseLeft) elm.style.left = (elm.offsetLeft-speed) + 'px'; else return elm.style.left = elm.baseLeft+"px";}
  new PeriodicalExecuter(function(pe) {pe.stop();move(side,elm,callback(speed),callback);},0.06);
}

function appear(dir,elm,speed,callback,onComplete) {
  if(dir) {
    if((Number(elm.style.opacity) + speed) <= 1) elm.style.opacity = Number(elm.style.opacity) + speed; 
    else {
      if(typeof onComplete == 'function') onComplete();
      elm.style.filter = 'alpha(opacity=100)'; 
      return elm.style.opacity = 1;
    }
  } else {
    if((elm.style.opacity - speed) >= 0) elm.style.opacity = elm.style.opacity - speed; 
    else {
      if(typeof onComplete == 'function') onComplete();
      elm.style.filter = 'alpha(opacity=0)'; 
      return elm.style.opacity = 0;
    }
  }
  elm.style.filter = 'alpha(opacity='+(elm.style.opacity*100)+')';
  new PeriodicalExecuter(function(pe) {pe.stop();appear(dir,elm,callback(speed),callback,onComplete); },0.06);
}
function puff(elm,speed,max,callback) {
  if((Number(elm.offsetHeight) + speed) >= max) {
    elm.style.left = (Number(elm.offsetLeft) - speed + max - Number(elm.offsetHeight)) + 'px';
    elm.style.top  = (Number(elm.offsetTop)  - speed + max - Number(elm.offsetHeight)) + 'px';
    elm.style.width =  elm.style.height = max + 'pt';
    return;
  } else {
    elm.style.left = (Number(elm.offsetLeft)  - speed) + 'px';
    elm.style.top  = (Number(elm.offsetTop)  - speed) + 'px';
    elm.style.width =  elm.style.height = (Number(elm.offsetHeight) + speed) + 'pt';
  }
  new PeriodicalExecuter(function(pe) {pe.stop();puff(elm,callback(speed),max,callback);},0.06);
}

function popup(msg) {
  $('content').appendChild(cElm('div',{ id : 'popup' },[
     cElm('div',{style:{margin:0}},msg),
     cElm('div',{className:'button'},[cElm('a',{style:{backgroundImage : 'url(doc/img/popup-close.png)',width:'78px'},href:'#;',onclick:function(){appear(0,$('popup'),0.05,function(speed){return speed*1.4;}, function(){Element.remove($('popup'));}); }})])
  ]));
  appear(1,$('popup'),0.05,function(speed){return speed*1.3;});
}

function showNosCoordonnees() {
  popup([cElm('img',{style:{margin:'40pt 0 0 50pt'},src:coords[0],alt:''}),
	 cElm('p',{style:{margin:'10pt 0 0 53pt'}},coords[1]),
         cElm('p',{style:{margin:'0 0 0 100pt'}},coords[2]),
         cElm('p',{style:{margin:'0 0 0 53pt'}},coords[3]),
         cElm('p',{style:{margin:'0 0 0 53pt'}},coords[4]),
         cElm('p',{style:{margin:'0 0 0 53pt'}},coords[5]),
         cElm('p',{style:{margin:'10pt 0 0 30pt'}},[cElm('a',{target:'_blank',href:'http://www.menages-prevoyants.fr/',style:{margin:'0'}},coords[6]),coords[7]])]);
}

function showNotreTemp() {
  popup([cElm('p',{style:{margin:0}},notre_temp[0]),
         cElm('p',{style:{margin:0}},notre_temp[1]),
         cElm('p',{style:{margin:0}},[notre_temp[2],cElm('br'),notre_temp[3]]),
         cElm('p',{style:{margin:0}},[notre_temp[4],cElm('br'),notre_temp[5]])]);
}

function chgContentSize(tosize) {
  $A($$('div#content *, div#content * *')).each(function(node){
    node.style.fontSize = tosize + 'px';
  });
}

var cElm = function(elm,vars,content){
  try{
    var HTMLelement = document.createElement(elm);
    if(typeof vars != "undefined") for(var k in vars) {
      if(typeof vars[k] == "object" || HTMLelement[k]) {
        for(var obj in vars[k]) {
          HTMLelement[k][obj] = vars[k][obj];
        }
      } else HTMLelement[k] = vars[k];
    }
    if(typeof content != "undefined") {
      if(typeof content == "object") {
        for(var obj in content) {
          if(typeof content[obj] == "object") HTMLelement.appendChild(content[obj]);
          else if(typeof content[obj] == "string") HTMLelement.appendChild(document.createTextNode(content[obj]));
        }
      } else HTMLelement.appendChild(document.createTextNode(content));
    }
  } catch(e) {alert('Erreur : '+e['message']);}
  return HTMLelement;
}

function addChild(that) {
  if($F('nb_childs') == 2) Element.hide(that);
  $('new_childs').appendChild(cElm('p',{className:'form'},[cElm('label',{},($F('nb_childs')*1+1) + 'e enfant : '),
                                                           cElm('select',{name:'p_civilite_child[]',style:{marginRight:"3px"}},[cElm('option',{},'---'),
                                                                                                                                cElm('option',{value:1},'Garçon'),
                                                                                                                                cElm('option',{value:3},'Fille')]),
							   cElm('input',{type:'text',value:child_default_value[1],style:{marginRight:"6px"},className:'nom child',name:'p_child_name[]'}),
							   cElm('input',{type:'text',value:child_default_value[2],className:'prenom child',name:'p_child_firstname[]'}),
							   cElm('label',{},' Date de naissance : '),
							   cElm('input',{type:'text',value:child_default_value[3],className:'date birth child',name:'p_child_birth[]'}),
							   cElm('p',{},alert_msg['more_than_tree_childs'])]));
  init();
  $('nb_childs').value = $F('nb_childs') + 1;
}


function getDevis (is_senior, is_couple) {
  var p_choice = '';
  if($('chk_option_0') && $('chk_option_0').checked) p_choice += 1;
  else p_choice += 0;
  if($('chk_option_1') && $('chk_option_1').checked) p_choice += 1;
  else p_choice += 0;
  if($('chk_option_2') && $('chk_option_2').checked) p_choice += 1;
  else p_choice += 0;
  if($('chk_option_3') && $('chk_option_3').checked) p_choice += 1;
  else p_choice += 0;
  if($('chk_option_4') && $('chk_option_4').checked) p_choice += 1;
  else p_choice += 0;

  if (p_choice == '00000' && !is_senior) return alert(alert_msg.p_formules);
  if (!($('chk_mail').checked || $('chk_courrier').checked)) return alert(alert_msg.p_support);

  var ret = true;
  $$('form input').each(function(node) {
    if (node.hasClassName('obl') && $F(node).trim() == '' && ret) (ret = false) || alert(alert_msg[node.name]);
  });
  if (!ret) return false;

  new Ajax.Request('service.php', {method: 'post',
                                    onException: function(t,exception) { myLog(exception,'error'); },
                                    onFail: ajaxFail,
                                    parameters: 'p_m=lmp&p_a=devis&p_mail=' + $('chk_mail').checked + '&p_courrier=' + $('chk_courrier').checked + '&p_choice='+p_choice+'&is_senior='+(is_senior?1:0)+'&'+$$('#confirmation form')[0].serialize(),
                                    on404: ajax404,
                                    onSuccess: function(t) {
                                      if (t.responseText == 'ok') {
	                                if ($('chk_mail').checked && !$('chk_courrier').checked) alert(thx_msg.mail);
	                                if (!$('chk_mail').checked && $('chk_courrier').checked) alert(thx_msg.courrier);
	                                if ($('chk_mail').checked && $('chk_courrier').checked) alert(thx_msg.mail_courrier);
                                        document.location.href = "/";
                                      } else {
	                                alert(alert_msg.p_email);
                                      }
                                    }
                                   });
}

function confirmDevis() {
  var p_choice = '';
  if($('chk_option_0') && $('chk_option_0').checked) p_choice += 1;
  else p_choice += 0;
  if($('chk_option_1') && $('chk_option_1').checked) p_choice += 1;
  else p_choice += 0;
  if($('chk_option_2') && $('chk_option_2').checked) p_choice += 1;
  else p_choice += 0;
  if($('chk_option_3') && $('chk_option_3').checked) p_choice += 1;
  else p_choice += 0;
  if($('chk_option_4') && $('chk_option_4').checked) p_choice += 1;
  else p_choice += 0;

  if (p_choice == '00000') return alert(alert_msg.p_formules);
  if (!($('chk_mail').checked || $('chk_courrier').checked)) return alert(alert_msg.p_support);
  
  $('p_email').removeClassName('obl');
  $('p_phone').removeClassName('obl');
  $('p_adr').removeClassName('obl');
  $('p_code').removeClassName('obl');
  $('p_city').removeClassName('obl');
  
  while($('phone_label').lastChild) $('phone_label').removeChild($('phone_label').lastChild);
  while($('email_label').lastChild) $('email_label').removeChild($('email_label').lastChild);
  while($('adr_label').lastChild) $('adr_label').removeChild($('adr_label').lastChild);
  while($('code_label').lastChild) $('code_label').removeChild($('code_label').lastChild);
  while($('city_label').lastChild) $('city_label').removeChild($('city_label').lastChild);

  if ($('chk_mail').checked) {
    $('p_email').addClassName('obl');
    $('email_label').appendChild(document.createTextNode('Adresse E-mail * : '));
  } else {
    $('email_label').appendChild(document.createTextNode('Adresse E-mail : '));
  }
  if ($('chk_courrier').checked) {
    $('p_phone').addClassName('obl');
    $('p_adr').addClassName('obl');
    $('p_code').addClassName('obl');
    $('p_city').addClassName('obl');
    $('phone_label').appendChild(document.createTextNode('Téléphone * : '));
    $('adr_label').appendChild(document.createTextNode('Adresse * : '));
    $('code_label').appendChild(document.createTextNode('Code postal  * : '));
    $('city_label').appendChild(document.createTextNode('Ville  * : '));
  }
   else {
    $('phone_label').appendChild(document.createTextNode('Téléphone : '));
    $('adr_label').appendChild(document.createTextNode('Adresse : '));
    $('code_label').appendChild(document.createTextNode('Code postal : '));
    $('city_label').appendChild(document.createTextNode('Ville : '));
  }
  
  ['result_devis','confirmation'].each(Element.toggle);
  return false;
}

function ajaxFail() {
  return myLog('La requête Ajax a échoué','error');
}

function ajax404() {
  return myLog('La requête Ajax a abouti à un 404','error');
}

function myLog(str,type) {
  if(typeof type    != 'string') var type = 'info';
  if(typeof console != 'undefined') return console[type](str);
  return false;
}

String.prototype.trim = function(){
  return this.replace(/(^\s*)|(\s*$)/g,'');
}

Event.observe(window, 'load', function(){init();});

