// Controlleur primaire du DMS

// initialisation du scope Dms
$.dms = $.dms || {};

var Dms = new function()
{
  var timeSortZones;
  
  // slot qui ont un cluetip
  this.cluetips = new Array();
  
  this.controllers = [];
  
  this.registerController = function(ctrl)
  {
    Dms.controllers.push(ctrl);
  }

  this.init = function(options)
  {
    var time_init_site = new Date();
    // extension des options par défaut
    Dms.options = $.extend($.dms.defaults, options);
        
    // configuration de la boîte à outils
    Util.init(Dms.options);
    
    // Démarrage des controlleurs externes
    for (var i in Dms.controllers)
    {
      Dms.controllers[i].init(Dms.options);
    }
    
    Dms.mediaLauncher();
    
    // si on peut éditer
    if (Dms.can("edition_1"))
    {
      setTimeout(DmsEdit.init, 150);
    }

    if (Dms.options.language_test)
    {
      setTimeout(function() {
        $.translate().ready(function(){
          $('#dms_layout_parts').translate(Dms.options.language_test);
        });
      }, 150);
    }
      
    // urchin tracker
    if (options.urchin_tracker && !options.is_localhost)
      Util.track(300);
    
    dbg("init site : "+(new Date()-time_init_site));
  };
  
  this.can = function(credentials)
  {
    var credentials_array = credentials.split(" ");
    
    for (var i in credentials_array)
    {
      if (Util.in_array(credentials_array[i], Dms.options.credentials))
        return true;
    }
    return false;
  };
  
  this.initDom = function($dom)
  {
    $dom = $dom || $(document);
    for (var i in Dms.controllers)
    {
      Util._fn(Dms.controllers[i].initDom)($dom);
    }
  }
  
  this.mediaLauncher = function($dom)
  {
    $dom = $dom || $(document);
      
    if ($media = $("div.dms_media", $dom).orNot())
      Dms.launchMedia($media);
      
    if ($gmap = $("div.dms_gmap", $dom).orNot())
      Dms.launchGmap($gmap);
  };
  
  this.launchMedia = function($elem)
  {
    $.fn.media.defaults.flvPlayer = Dms.options.mediaplayer_url;
    $.fn.media.defaults.mp3Player = Dms.options.mediaplayer_url;
    $.fn.media.defaults.params.allowFullScreen = 'true';
    $elem.find("div.dms_media_alt").remove();
    if($('.action_voeux2010').length)
    {
      $elem.media({
        autostart:      true
      });
      dbg('toto');
    }
    else
    {
      $elem.media();
    }
    if (typeof(DmsEdit) != "undefined")
      DmsEdit.overFlash();
  };
  
  this.launchGmap = function($elem)
  {
    if (!$.fn.jmap)
    {
      $elem.html(Dms.alertMsg("Rechargez la page pour activer l'API GoogleMap"));
      return;
    }
    var metas = $elem.metadata();dbg(metas);
//    Dms.showGmap($elem, metas, (metas.lat && metas.lng) ? [metas.lat, metas.lng] : [ 47.77, 1.35 ]);

    $elem.jmap('init', {
      'mapType':G_NORMAL_MAP,
      'mapCenter':[metas.lat, metas.lng]
    });
    /*
    var icon = Mapifies.createIcon({
      iconImage: "http://www.vm-materiaux.fr/images/icoGmap.png",
      iconShadow: "http://www.vm-materiaux.fr/images/shadowGmap.png",
      iconSize:  new GSize(34, 39)
    });
    icon.imageMap = [0,0, 0,38, 33,38, 33,0];
*/
    $elem.jmap('AddMarker', {
      'pointLatLng': [metas.lat, metas.lng],
      'pointHTML': metas.text
      /*'pointIcon': icon*/
    });
    
    dbg([0, 0, 34, 0, 34, 39, 0, 39]);

    $("input#depart").one("click", function(){$(this).val("");});

    $("form.direction").submit(function(){
      var query = "from: "+$("form.direction input#depart").val()+", to: "+metas.lat+","+metas.lng;
      $elem.jmap('SearchDirections', {
          'query': query,
          'panel': '#itineraire',
          'locale': 'fr_FR'
      }, function(result, options) {
        var valid = Mapifies.SearchCode(result.getStatus());
        if (valid.success) {
         $("form.direction p.erreur").html("");
         $.each(result.Placemark, function(i, point){
           $elem.jmap('AddMarker',{
             'pointLatLng':[point.Point.coordinates[1], point.Point.coordinates[0]],
             'pointHTML':point.address
           });
         });
       } else {
         //$("form.direction p.erreur").html("Cette adresse n'a pas pu être trouvée. Essayez de l'écrire autrement.");
       }
     });
      return false;
    });
  };
  
  this.showGmap = function($elem, metas, center)
  {
    metas = metas || $elem.metadata();
    
    $elem.jmap('init', {
      // Initial type of map to display
      language: "fr",
      // Options: "map", "sat", "hybrid"
      mapType: metas.map_type,
      // Initial map center
      mapCenter: center,
      // Initial zoom level
      mapZoom: parseInt(metas.zoom),
      // Initial map control size
      // Options: "large", "small", "none"
      mapControlSize: "small",
      // Initialise type of map control
      mapEnableType: false,
      // Initialise small map overview
      mapEnableOverview: false,
      // Enable map dragging when left button held down
      mapEnableDragging: true,
      // Enable map info windows
      mapEnableInfoWindows: true,
      // Enable double click zooming
      mapEnableDoubleClickZoom: false,
      // Enable zooming with scroll wheel
      mapEnableScrollZoom: false,
      // Enable smooth zoom
      mapEnableSmoothZoom: false,
      // Enable Google Bar
      mapEnableGoogleBar: false,
      // Enables scale bar
      mapEnableScaleControl: false,
      // Enable the jMap icon
      mapShowjMapIcon: false,
      //Debug Mode
      debugMode: false
    });
    $elem.jmap('moveTo', {mapCenter: center});
    $elem.jmap('addMarker', {pointIcon: $.jmap.createIcon({
        iconImage: "http://www.vm-materiaux.fr/images/icoGmap.png",
        iconShadow: "http://www.vm-materiaux.fr/images/shadowGmap.png",
        iconSize:  new GSize(34, 39)
      }), pointLatLng:center, pointHTML: metas.text || null});
  }
  
  this.alertMsg = function(text)
  {
    return Util.img("16/asterisk_orange.png")+text;
  };

};

$(function(){Dms.init(page_options);});
