var IE6 = false;
if (Prototype.Browser.IE) {
  var rslt = navigator.appVersion.match(/MSIE (\d+\.\d+)/, "");
  if (rslt != null && Number(rslt[1]) >= 5.5 && Number(rslt[1]) < 7) {
   IE6 = true;
  }
}

var Voiture = {
  "form" : null,
  "marques" : null,
  "selectedMarque" : 0,
  "selectedModele" : 0,
  "loadMarques" : function(t){
    if (!$(Voiture.form)) return false;
    Voiture.marques = t.result.marques;
    Voiture.populateMarque();
    Voiture.populateModele($(Voiture.form.marque));
  },

  "populateMarque" : function(){
    form = Voiture.form;
    el = form.marque;
    while(el.options.length > 2) el.options[el.options.length-1] = null;
    $H(Voiture.marques).each(
      function (opt) {
        var selected = false;
        if (Voiture.selectedMarque == opt.value.props.id) selected = true;
        el.options[el.length] = new Option(opt.value.props.name, opt.value.props.id, selected, selected);
      });
  },

  "populateModele" : function(el){
    form = el.form;
    while(form.modele.options.length >= 1){
      form.modele.options[form.modele.options.length-1] = null;
    }
    if (Voiture.marques["id"+el.value].values.length < 1) return null;
    $H(Voiture.marques["id"+el.value].values).each(
      function (opt) {
        var selected = false;
        if (Voiture.selectedModele == opt.value.id) selected = true;
        form.modele.options[form.modele.length] = new Option(opt.value.name, opt.value.id, selected, selected);

        form.modele.options[form.modele.length-1].onfocus  = function() { Voiture.display.flagDisplay = 1; Voiture.display.redimSelect(); };

        if (Prototype.Browser.IE) {
          form.modele.options[form.modele.length-1].onblur  = function() { Voiture.display.flagDisplay = 0; Voiture.display.redimSelect(); };
        } else {
          form.modele.options[form.modele.length-1].onclick = function() { $('modele').blur(); Voiture.display.flagDisplay = 0; Voiture.display.redimSelect(); };
          form.modele.options[form.modele.length-1].onmouseout = function() { Voiture.display.flagDisplay = 0; Voiture.display.redimSelect(); };
        }
      });
  },

  "confirmForm" : function (h) {
    if (h["error"] >= 1) {
      Kwo.error(h["result"]["msg"]);
    } else {
      Kwo.warn(h["result"]["msg"]);
      var dialog = Kwo.getDialog();
      if (dialog) {
        dialog.close();
      }
    }
  }

};


Voiture.signup ={
 "hideSocial" : function(){
  $('form_advert').hide(); 
  $('form_adresse').show(); 
  $('social').hide();
  $('prenom').focus();
  },
  
  "showSocial" : function(){
  $('form_advert').hide();
  $('form_adresse').show();
  $('social').show();  
  $('raisonsociales').focus();
  }
};

Voiture.newsletter = {

  "add" : function (args) {
    if (args.email.value == "Inscription à la Newsletter") return false;
    Kwo.exec("/push.add", args, {"callback" : Voiture.confirmForm, "reset" : true });
  }

}

Voiture.annonces = {

  "verifAlert" : function(){
      Kwo.exec ("/alerte.verif", null, {"callback":Voiture.annonces.addAlert});
  }  ,
  
  "addAlert":function(t){
   if (t["error"] > 0) {
      Kwo.error(t["result"]["msg"]);
      return;
    }
    new Kwo.Dialog ("/form.add.alerte", null, {"width" : 488, "height" : 400});
  },
  
  "removeAlerte" : function (id) {
    if (confirm("Etes-vous sûr de vouloir effacer cette sélection ?")) {
      Kwo.exec ("/alerte.remove", {"id" : id}, {"callback":Voiture.annonces.selectionReload});
    }
  },
  
  "selectionReload": function(){
    Kwo.exec ("/selections", null, {"container":$('mySelection')});
  },
  
  "addSelection" : function (id) {
    Kwo.exec ("/selection.add", {"id" : id}, {"callback":Voiture.annonces.selectionModified});
  },


  "contactVendeur" : function (id) {
    new Kwo.Dialog ("/form.contact.vendeur", {"id" : id}, {"width" : 488, "height" : 400});
  },
  
  "hideSelection" : function () {
    $("selection-show").show();
    $("selection-list").hide();
  },

  "removeSelection" : function (id) {
    if (confirm("Etes-vous sûr de vouloir effacer cette sélection ?")) {
      Kwo.exec ("/selection.remove", {"id" : id}, {"callback":Voiture.annonces.selectionReload});
    }
  },
  
  "clearSelection" : function (id) {
    if (confirm("Etes-vous sûr de vouloir effacer toutes vos sélections ?")) {
      Kwo.exec ("/selection.clear", {}, {"callback":Voiture.annonces.selectionReload});
    }
  },
  
  "selectionModified" : function (t) {
    if (t["error"] > 0) {
      Kwo.error(t["result"]["msg"]);
    }
    else {
      Voiture.annonces.selectionReload();
      Kwo.warn(t["result"]["msg"]);
    }
  },

  "sendContact" : function (args) {
    Kwo.exec ("/send.contact.vendeur", args, {"callback" : Voiture.confirmForm });
  },

  "sort" : function (id) {
    el = $(id);
    if (Voiture.form.orderBy.value == el.title) {
      if (Voiture.form.sortBy.value == "asc") Voiture.form.sortBy.value = "desc";
      else Voiture.form.sortBy.value = "asc";
    } else Voiture.form.orderBy.value = el.title;
    Voiture.form.offset.value = 0;
    Kwo.go("/annonces", Voiture.form);
  },
  
  "storeAlerte" : function(args){
    Kwo.exec ("/alerte.add", args, {"callback" : Voiture.annonces.confirm });
  },
  
  "confirm" : function(t){
    if (t["error"] > 0) {
      Kwo.error(t["result"]["msg"]);
      return;
    }
    var dialog = Kwo.getDialog();
    if (dialog) {
      dialog.close();
    }
    Kwo.warn(t["result"]["msg"]);
    Voiture.annonces.selectionReload();
  },
  
  "change_image":function(el){
    var path = el.src.substr(0,el.src.indexOf('_',0));
    var src = el.src.substr(el.src.indexOf("_small_",0)+7,el.src.length-1);
    $("zoom-thumb").src = path+"_medium_"+src;
    
  }
  
}

Voiture.display = {
  "dimSelectModele" : 0,
  "timer" : null,
  "flagDisplay" : 0,
  "alphaBackgrounds" : function (e) {
    var bg = e.currentStyle.backgroundImage;
    if (bg.match(/\.png/i) != null && e.hasClassName("trans")) { 
      var mypng = bg.substring(5,bg.length-2);
      e.setStyle({
        filter : "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + mypng + "', sizingMethod='" + (e.currentStyle.backgroundRepeat == "no-repeat" ? "crop" : "scale") + "')",
        backgroundImage : "none"}); 
    }
  },

  "fnLoadPngs" : function (img){
    if (img.src.match(/\.png$/i) != null) {
      var src = img.src;
      var div = document.createElement("DIV");    
      div.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizing='scale')";
      div.style.width = img.width + "px";
      div.style.height = img.height + "px";
      img.replaceNode(div); 
    }
  },

  "swapBg" : function (el) {
    var position = "top";
    if (!el.style.backgroundPosition.match(/bottom/gi)) position = "bottom";
    el.setStyle({ backgroundPosition: "left " + position });
  },

  "redimSelect" : function () {
    el = $('modele');

    if (el.length < 2) return;

    if (el.up('form').id == 'formSearchAnnonceHome') Voiture.display.dimSelectModele = '139px';
    else Voiture.display.dimSelectModele = '160px';

    clearTimeout(Voiture.display.timer);

    if (Voiture.display.flagDisplay == 1) {
      el.absolutize();
      el.activate();
      el.style.height = '1.7em';
      el.style.width = '300px';
    } else {
      Voiture.display.timer = setTimeout(function() {
        $('modele').style.width = Voiture.display.dimSelectModele;
        $('modele').relativize();
        clearTimeout(Voiture.display.timer);
      }, 200);
    }
  }
};

var Account = {};

Account.annonces = {
  "sort" : function (id) {
    el = $(id);
    if (Voiture.form.orderBy.value == el.title) {
      if (Voiture.form.sortBy.value == "asc") Voiture.form.sortBy.value = "desc";
      else Voiture.form.sortBy.value = "asc";
    } else Voiture.form.orderBy.value = el.title;
    Voiture.form.offset.value = 0;
    Account.annonces.refreshList(Voiture.form);
  },

  "offset" : function (page) {
    Voiture.form.offset.value = page;
    Account.annonces.refreshList(Voiture.form);
  },

  "remove": function(id, msg) {
    msg = msg || "Êtes-vous sûr ?";
    Kwo.exec("/account/voitureco/annonce.remove", {"id": id}, {"confirm": msg, "callback":Account.annonces.refreshList});
  },

  "add": function(args) {
    Kwo.exec("/account/voitureco/annonce.store", args, {"callback": function(h) { Voiture.confirmForm(h); Kwo.Account.selectAction('annonces', true); }});
    return false;
  },

  "store": function(args) {
    Kwo.exec("/account/voitureco/annonce.store", args, {"callback": Voiture.confirmForm});
    return false;
  },

  "activate": function(id) {
    Kwo.exec("/account/voitureco/annonce.activate", {"id": id}, {"callback": function(h) { Voiture.confirmForm(h); Account.annonces.refreshList($("formSearchAnnonce")); } });
    return false;
  },

  "refreshList": function(args) {
    Kwo.exec("/account/voitureco/annonce.list", args, {"container":$("accountAnnoncesList")});
    return false;
  }

};

var Voitureco = {};

Voitureco.Zoom = {
  "load" : function (elm) {
    if (!$('zoom-layout')) {
      var contener = new Element('div',{'id' : 'zoom-contener'});
      var layout = new Element('div',{'id' : 'zoom-layout'});
      document.body.appendChild(layout);
      document.body.appendChild(contener);
      var error_image = new Image();
      error_image.src = '/app/sys/pix/error48.gif';
      Voitureco.Zoom.imgs_cached = [error_image];
      Voitureco.Zoom.imgs_error = [];
      Voitureco.Zoom.imgs_width = [48];
      Voitureco.Zoom.imgs_cached[0].loadedEvent = Voitureco.Zoom.imageLoaded.bindAsEventListener({"index" : 0});
      $(Voitureco.Zoom.imgs_cached[0]).observe('click',Voitureco.Zoom.close.bindAsEventListener({"index" : 0}));
    
    } else {
      while ($('zoom-contener').lastChild) $('zoom-contener').removeChild($('zoom-contener').lastChild);
      $('zoom-contener').show();
      $('zoom-layout').show();
    }

    var viewport_dimensions = document.viewport.getDimensions();
    $('zoom-contener').setStyle({'height' : '40px',
                                 'width'  : '90%',
                                 'left'   : '5%'});
    var id = Voitureco.Zoom.isCached(elm);
    if (id === false) {
      id = Voitureco.Zoom.imgs_cached.push(new Image()) - 1;
      Voitureco.Zoom.imgs_cached[id].src = elm.href;
      $(Voitureco.Zoom.imgs_cached[id]).observe('click',Voitureco.Zoom.close.bindAsEventListener({"index" : id}));
    }
    if (typeof Voitureco.Zoom.imgs_cached[id].loadedEvent !== 'function' || typeof Voitureco.Zoom.imgs_cached[id].errorLoadedEvent !== 'function') {
      Voitureco.Zoom.imgs_cached[id].loadedEvent = Voitureco.Zoom.imageLoaded.bindAsEventListener({"index" : id});
      Voitureco.Zoom.imgs_cached[id].observe('load',Voitureco.Zoom.imgs_cached[id].loadedEvent);
      Voitureco.Zoom.imgs_cached[id].errorLoadedEvent = Voitureco.Zoom.imageLoaded.bindAsEventListener({"index" : 0, "error" : id});
      Voitureco.Zoom.imgs_cached[id].observe('error',Voitureco.Zoom.imgs_cached[id].errorLoadedEvent);
    } else if (!Prototype.Browser.IE) Voitureco.Zoom.imageLoaded(null, {'index' : id});
    if (Prototype.Browser.IE) {
     Voitureco.Zoom.imageLoaded(null, {'index' : id});
      if(IE6) $$('select').invoke('hide');
    }
    return false;
  },

  "imageLoaded" : function (e, obj) {
    if (e !== null) obj = this;
    if (!obj.error) {
      for (var k in Voitureco.Zoom.imgs_error) if (Voitureco.Zoom.imgs_error[k] == obj.index) {
        obj.index = 0;
        break;
      }
    } else Voitureco.Zoom.imgs_error.push(obj.error);
    while ($('zoom-contener').lastChild) $('zoom-contener').removeChild($('zoom-contener').lastChild);
    $('zoom-contener').appendChild(Voitureco.Zoom.imgs_cached[obj.index]);
    if (!Voitureco.Zoom.imgs_width[obj.index]) Voitureco.Zoom.imgs_width[obj.index] = Voitureco.Zoom.imgs_cached[obj.index].getDimensions().width;
    var viewport_dimensions = document.viewport.getDimensions();
    var img_dimensions = $($('zoom-contener').firstChild).getDimensions();
    var left_position = ((viewport_dimensions.width - img_dimensions.width + 10) / 2) + 'px';
    if (img_dimensions.width > viewport_dimensions.width * 0.9 || img_dimensions.width < Voitureco.Zoom.imgs_width[obj.index]) {
      left_position = '5%';
      Voitureco.Zoom.imgs_cached[obj.index].setStyle({'width'  : (viewport_dimensions.width * 0.9) + 'px'});
      if (Prototype.Browser.IE) Voitureco.Zoom.imgs_cached[obj.index].setStyle({'height' : ((img_dimensions.height / img_dimensions.width) * viewport_dimensions.width * 0.9) + 'px'});
      img_dimensions.width = viewport_dimensions.width * 0.9;
    }
    $('zoom-contener').setStyle({'height' : 'auto',
                                 'width' : (img_dimensions.width + 10) + 'px',
                                 'left' : left_position});
    var layout_height = $(document.body).getHeight() > viewport_dimensions.height ? $(document.body).getHeight() : viewport_dimensions.height;
    $('zoom-layout').setStyle({'width' : (viewport_dimensions.width - 2) + 'px',
                               'height' : layout_height + 'px'});
    $('zoom-layout').observe('click', Voitureco.Zoom.close.bindAsEventListener({"index" : obj.index}));
    if (Voitureco.Zoom.observing !== obj.index) {
      if (Voitureco.Zoom.observing) Event.stopObserving(window, 'resize', Voitureco.Zoom.imgs_cached[Voitureco.Zoom.observing].loadedEvent);
      Event.observe(window, 'resize', Voitureco.Zoom.imgs_cached[obj.index].loadedEvent);
    }
    Voitureco.Zoom.observing = obj.index;
  },

  "isCached" : function (elm) {
    var k;
    for (k in Voitureco.Zoom.imgs_cached) 
      if (Voitureco.Zoom.imgs_cached[k].src === elm.href) return k;
    return false;
  },

  "close" : function (e) {
    Event.stopObserving(window,'resize',Voitureco.Zoom.imgs_cached[this.index].loadedEvent);
    $('zoom-contener').hide();
    $('zoom-layout').hide();
  $$('select').invoke('show');
  },

  "rotateThumb" : function (elm) {
    $('zoom-thumb').src = elm.firstChild.src.replace(/\/_small_/, "/_medium_");
    $('zoom-thumb').up('a').href = elm.href.replace(/\/_small_/, "/_medium_");
    return false;
  }
};

document.observe("dom:loaded", function() {
    if (IE6) {
      $$("*").each(Voiture.display.alphaBackgrounds);
      $$("img.trans").each(Voiture.display.fnLoadPngs);
    }
});
