/*  Le Phare JavaScript library - (c) 2009
/*--------------------------------------------------------------------------*/

var Loader = Class.create({
   initialize: function(element) {
      if($(element)) {
         this.idBody = element;
         this.registerGenerics();  // call generics f°
         this.registerSpecifics(); // call specificsf°
      }
      else {
         alert('ATTENTION\nLa balise body n\'a pas d\'id !');
      }
   },

   registerGenerics: function() {
         //maFonctionGenerique();
   },

   registerSpecifics: function() {
         switch (this.idBody) {
            case 'pageAccueil':
               new Fabtabs('tabs');
               Event.observe('pdmDevise', 'change', changeDevise);
               break;
            case 'pageContact':
            case 'pageVendreBateau':
               initGeoLoc();
               if($('data_vb_intention_achat1_') && $('jsAbonnSGB')) {
                ['data_vb_intention_achat1_', 'data_vb_intention_achat2_', 'data_vb_intention_achat3_'].each(function(e) {
                     Event.observe(e, 'click', function(e) {
                           var elt = Event.element(e);
                              if(elt.id =='data_vb_intention_achat1_' || elt.id=='data_vb_intention_achat2_') $('jsAbonnSGB').show();
                              else  $('jsAbonnSGB').hide();
                        });
                   });
               }
               setErrMsg();
               break;
            case 'pageNewsletter':
               setErrMsg();
               checkAllZone();
               break;
            case 'pageDesinscription':
               initDesinscription();
               break;
            case 'pageFicheVoile':
            case 'pageFicheMoteur':
               new Fabtabs('tabs');
               Event.observe('pdmDevise', 'change', changeDevise);
               gest_commFA();
               initContactVendor();
               break;
            case 'pageCarteReseau':
               initCarteReseau();
               break;
         }
   }
});


// load
Event.observe(window, 'load', function() {
   var loader = new Loader(document.body.id);
});

/*--------------------------------------------------------------------------*/

function setErrMsg()
{
   if($('errMsg')) {
      if($('errMsg').innerHTML  != '') {
         Element.show('errMsg'); Effect.BlindUp('errMsg', {delay:3});
      }
   }
}



function initContactVendor() {
      Event.observe('btnContactVendeur', 'click', getLayerContact);
      Event.observe('btnContactVendeurMini', 'click', function() { $('content').scrollTo();getLayerContact();});
}

function initGeoLoc() {
   if($('data_vb_ville_port_')) {
      Event.observe('data_vb_ville_port_', 'keydown', function() {
            if($F('data_vb_ville_port_').length > 3)
            {
               var pars = 'vb_ville_port='+$F('data_vb_ville_port_')+'&vb_pays='+$F('data_vb_pays_');
               var uri = '/'+jsLangue+'/s04_contact/_geoLocalizeBoat.php';

               $('pictoLoader').show();

               var myAjax = new Ajax.Request( uri, { method: 'post' , parameters: pars, onSuccess: function(transport) {
                     var rep = transport.responseText.evalJSON(true);

                     htmlRep = '';

                     $('selectedPropVille').innerHTML = '';

                     if(rep.Status.code == '200')
                     {
                        // si un seul résultat
                        if(rep.Placemark[1] === undefined)
                        {
                           htmlRep += "<li><a href=\"javascript://\" onclick=\"$(\'data_vb_ville_port_\').value=this.innerHTML;$('data_coord_').value='"+coordinates+"';$(\'selectedPropVille\').hide();\" >"+rep.Placemark.address+"</a></li>";
                        }
                        else
                        {
                           rep.Placemark.each(function(p) {
                                                   coordinates = p.Point.coordinates.toString();
                                                   htmlRep += "<li><a href=\"javascript://\" onclick=\"$(\'data_vb_ville_port_\').value=this.innerHTML;$('data_coord_').value='"+coordinates+"';$(\'selectedPropVille\').hide();\" >"+p.address+"</a></li>";
                                                });
                        }

                        if(htmlRep != '') {
                           htmlRep = '<ul>'+htmlRep+'</ul>';
                           $('selectedPropVille').innerHTML = htmlRep;
                           $('selectedPropVille').show();
                        }
                     }
                     $('pictoLoader').hide();
                  }
               });
            }
      });
   }
}



function initDesinscription()
{
   var zeForm = new Validation('auth', {
      useTitles:true,   // pour utiliser les titles des champs comme message d’erreur
      stopOnFirst:true, // arête à la premiere erreur
      onFormValidate:  // definie la function qui permet d’empeche l’envoie du form sans js et donc sans verif
         function() {$('todo').value = "unsub";}
      });
}

function setModeleConstructeurVoile()
{
   $('data_keywordVoile_').value = $('constModelVoil').value;
   $('formRechVoile').submit();
}

function setModeleConstructeurMoteur()
{
   $('data_keywordMoteur_').value = $('constModelMot').value;
   $('formRechMoteur').submit();
}

//Set le mot clef du moteur de recherche
function setKeyword(text, li)
{
   if ($('data_type_bateau_').value == 1) $('data_keyword_').value = $('constModelVoil').value;
   if ($('data_type_bateau_').value == 2) $('data_keyword_').value = $('constModelMot').value;
   changeCriterias();
}
function setKeywordCote(text, li)
{
   $('keyword').value = $('constModel').value;
}

//Fonction permettant de gérer le menu déroulant des devises
function changeDevise()
{

   id_devise = $F('pdmDevise');
   if (id_devise != 0) {
      $('idDevise').value = id_devise;
      $('formDevise').submit();
   }
}

//Fonction permettant de gérer l'affichage du commentaire dans la langue désirée sur une fiche annonce
function showComEn()
{
   $('commEnCourt').toggle();
   $('commOrgCourt').toggle();
}

//Fonction permettant de gérer l'affichage du commentaire long / court sur une fiche annonce
function showComLong(com)
{
   comLong = 'comm'+com;
   comcourt = 'comm'+com+'Court';

   $(comLong).toggle();
   $(comcourt).toggle();
}
// fonction de gestion de l'affichage ou non de l'anglais ou francais et de l'agrandissement ou non
function gest_commFA()
{
   $$('.jsBtnLangue').each(function(obj){
      Event.observe(obj,'click',function(e){
         var elt = Event.findElement(e, 'A');
         var langue = elt.id.replace('btn','');
         $$('.blockLG').each(function(obj) {obj.hide()});
         $('block'+langue).toggle();;
      });
   });

}


//Zoom sur une photo dans la fiche annonce
function showZoomPhoto(id_photo)
{

   $$('.zoom').each(function(obj)
   {
      obj.hide();
   });

   $(id_photo).appear();
}

//Affiche le layer plus decriteres
function showMoreCriterias(typeCritere)
{
   var mySlideDown = new Effect.SlideDown(typeCritere,{
   afterFinish: function(){
      createLongueurSlider();
      $('data_moreCriterias_').value = "block";}
   });
}

//Masque le layer plus decriteres
function hideMoreCriterias(typeCritere)
{
   new Effect.SlideUp(typeCritere);
   $('data_moreCriterias_').value = "none";
}

//Gestion du slider des longueurs
function createLongueurSlider()
{
   var  largeurSlider = $('largeurSlider'),
         minLimitLargeur = parseInt($('minLargeur').innerHTML.replace(/ /gi , ""),10),
         maxLimitLargeur = parseInt($('maxLargeur').innerHTML.replace(/ /gi , ""),10);
   //Si les valeurs par défaut sont à zéro on les settes aux bornes
   if (defaultMinValueLargeur == 0) defaultMinValueLargeur = minLimitLargeur;
   else                              $('currentMinLargeur').innerHTML = Math.round(defaultMinValueLargeur) + ' m';
   if (defaultMaxValueLargeur == 0) defaultMaxValueLargeur = maxLimitLargeur;
   else                              $('currentMaxLargeur').innerHTML = Math.round(defaultMaxValueLargeur) + ' m';
   var myLargeurSlider = new Control.Slider(largeurSlider.select('.handle'), largeurSlider, {
      range: $R(minLimitLargeur, maxLimitLargeur),
      restricted: true,
      increment: 1000,
      sliderValue: [defaultMinValueLargeur, defaultMaxValueLargeur],
      onSlide: function(values, elt) {
         $('currentMinLargeur').innerHTML = Math.round(values[0]) + ' m';
         $('currentMaxLargeur').innerHTML = Math.round(values[1]) + ' m';
         if($('flagAbonnAlerte') && elt.activeHandle.id == 'handleMinLargeur') myLargeurSlider.setValue(Math.round(values[0])+1, 1);
      },
      onChange: function(values) {
         $('data_minLargeur_').value = Math.round(values[0]);
         $('data_maxLargeur_').value = Math.round(values[1]);
         $('currentMinLargeur').innerHTML = Math.round(values[0]) + ' m';
         $('currentMaxLargeur').innerHTML = Math.round(values[1]) + ' m';
         changeCriterias();
      }
    });
}

//Fonction permettant d'appeller le compteur d'annonces
function getNbResult()
{
   //Sérialize les données du formulaire pour le post
   Params = $($F('form_name')).serialize();
   //Création de l'appel ajax
   objList = new Ajax.Updater(
               'counter', '/'+jsLangue+'/s06_annonces/_getCountAnnonce.php', {method: 'post', parameters: Params, evalScripts: true, onSuccess: function() {
                  $('pictoLoader').hide();}
               });
}




//Fonction permettant d'appeller la liste filtrée
function changeCriterias()
{
   // si abonnement annonces
   if(document.body.id == 'pageNewsletter')
   {
      $('pictoLoader').show();
      getNbResult();
   }
   else // document.body.id == 'pageAnnoncesVoile' ou 'pageAnnoncesMoteur'
   {
      if($('pictoLoader')) $('pictoLoader').show();
      //Sérialize les données du formulaire pour le post
      Params = $($F('form_name')).serialize();
      //Création de l'appel ajax
      objList = new Ajax.Updater(
                  'lstAnnonces', '/'+jsLangue+'/s06_annonces/_getListAnnonce.php', {method: 'post', evalScripts: true, parameters: Params, onSuccess: function() {
                  $('pictoLoader').hide();}
               });
   }

   //Gestion de l'affichage du bouton de la carto google.
   if ($('data_rayon_').value == 0) $('supCooGps').hide();
}

function call_back_Close(){
   changeCriterias();
}

//Permet de supprimer le critere coordonnees gps
function supCooGps()
{
   $('data_rayon_').value = 0;
   $('data_coo_x_').value = "";
   $('data_coo_y_').value = "";
   $('infoLocalisation').innerHTML = "";
   changeCriterias();
}

//Permet de setter les coordonnees google map
function setInfosCoordonnees(rayon, coo_x, coo_y)
{
   $('infoLocalisation').innerHTML = " R: " + +Math.round(rayon) + " Km, " + "GPS: (" + Math.round(coo_x*100)/100 + "," + Math.round(coo_y*100)/100 + ")";
   $('supCooGps').show();
}

//Gere le changement de page
function changePageAnnonce(no_page)
{
   $('datalist_pg_cur_').value = no_page;
   changeCriterias();
}

//Gere le changement de page
function changePageAnnonceSimple(no_page)
{
   $('pg_cur').value = no_page;
   $('formAnnonce').submit();
}


//Change l'ordre d'affichage de la liste
function changeOrderListAnnonce(orderField)
{
   $('datalist_order_field_').value = orderField;
   if ($('datalist_order_sens_').value == "") $('datalist_order_sens_').value = "asc";
   changeCriterias();
}

//Fonction pour le plan d'accès google
function gotoAcessPlan(id_concessionnaire)
{
 mapGoogle = window.open("/"+jsLangue+"/s20_reseau/s20p04_popup_acces.php?concessionnaire="+id_concessionnaire, "popupGoogleMaps", "width=550,height=450,scrollbars");
 mapGoogle.focus();
}

//Fonction appellé pour le chargement de la page du réseau
function initCarteReseau()
{
   loadMapConcessionnaire();
   changeLstConcessionnaire();
}

//Fonction permettant d'appeller la liste filtrée des concessionnaires
function changeLstConcessionnaire()
{
      //$('pictoLoader').show();
      //Création de l'appel ajax
      objList = new Ajax.Updater(
                  'listeConcess', '/'+jsLangue+'/s20_reseau/_getListConcessionnaire.php', {method: 'post',
                  parameters: {lst_concessionnaire:lstIdConcessionnaire},evalScripts:true,

                  onSuccess: function() {$('pictoLoader').hide();}
               });
}


function checkAllZone() {
   if($('jsTouteZone')) {
      Event.observe('jsTouteZone', 'click', function(event) {
         var tz = Event.element(event);
            if(tz.checked) $$('.jsZoneRecherche').each(function(e) {e.checked = true; });
            else  $$('.jsZoneRecherche').each(function(e) {e.checked = false; });
      });
   }
}

//Fonction permettant de faire le slidedown sur les modeles
function showPlusMod(ulId)
{
   if (ulId == 'lstTopModeleVoile')
   {
     $('lnkPlusModVoile').hide();
     $('lnkToutModVoile').show();
     $(ulId).removeClassName('lstTopModeleHeightVoile');
   }
   else
   {
      $('lnkPlusModMoteur').hide();
      $('lnkToutModMoteur').show();
      $(ulId).removeClassName('lstTopModeleHeightMoteur');
   }
   //Effect.SlideDown(ulId);
}

//Fonction permettant de faire le slidedown sur les constructeurs
function showPlusCons(ulId)
{

   if (ulId == 'lstTopConstructeurVoile')
   {
     $('lnkPlusConsVoile').hide();
     $('lnkToutConsVoile').show();
     $(ulId).removeClassName('lstTopConstructeurHeightVoile');
   }
   else
   {
      $('lnkPlusConsMoteur').hide();
      $('lnkToutConsMoteur').show();
      $(ulId).removeClassName('lstTopConstructeurHeightMoteur');
   }
   //Effect.SlideDown(ulId);
}
