var markerA = new Array();
var trad = new Array();
var map;
var center;
var zoom;
trad['agrandir'] = new Array('Agrandir','Grow','Crecer','Wachsen');
trad['reduire'] = new Array('Réduire','Shrink','Reducir','Reduzieren');
trad['totaloffre'] = new Array('Voir la totalité des offres','Grow','Crecer','Wachsen');
trad['reduiretotaloffre'] = new Array('Réduire les offres','Shrink','Reducir','Reduzieren');


var langue=0;
function initialize(){
  geocoder = new google.maps.Geocoder();
  center = new google.maps.LatLng(43.615846,1.439781);
  zoom = 10;
  var myOptions = {
    zoom: zoom,
    center: center,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  }
  map = new google.maps.Map(document.getElementById('map'), myOptions);
  google.maps.event.addListener(map, 'dragend', function(){center = map.getCenter();});
  google.maps.event.addListener(map, 'zoom_changed', function(){zoom = map.getZoom();});
  var myRequest = new Request({url: 'http://www.hotel-toulouse-reservation.com/fileadmin/includes/googlemap/cache/data.xml',method: 'get', onSuccess: function(responseText, responseXML) {setMarkers(responseXML,map);}}).send();
  centerMap((parseInt($('mask-map').getStyle('width')) - parseInt($('map').getStyle('width'))),(parseInt($('mask-map').getStyle('height')) - parseInt($('map').getStyle('height'))));
}
function getL()
{
  var L = new RegExp('L=', 'g');
  if(!L.test(window.location.href))
  {
    langue = 0;
  }
  else
  {
    gets = window.location.href.split(L);
    langue = parseInt(gets.pop());
    var dispose = $('langue').getChildren('li')[langue].dispose();
    dispose.inject($('langue'),'top');
  }
}
function initMap()
{
  map.setCenter(center);
	map.setZoom(zoom);
}

function centerMap(x,y)
{
  var morph = new Fx.Morph($('map'));
  morph.start({
  	'left': x/2,
  	'top': y/2
  });
}


function setMarkers(xmlDoc)
{
  var markers = xmlDoc.documentElement.getElementsByTagName('marker');
  for ( i = 0; i < markers.length; i++)
  {      
    var lat = (markers[i].getElementsByTagName('lat').item(0).text) ? parseFloat(markers[i].getElementsByTagName('lat').item(0).text) : parseFloat(markers[i].getElementsByTagName('lat').item(0).textContent);
    var lng = (markers[i].getElementsByTagName('lng').item(0).text) ? parseFloat(markers[i].getElementsByTagName("lng").item(0).text) : parseFloat(markers[i].getElementsByTagName("lng").item(0).textContent);
    var point = new google.maps.LatLng(lat,lng);
    var nom = (markers[i].getElementsByTagName('nom').item(0).text) ? markers[i].getElementsByTagName('nom').item(0).text : markers[i].getElementsByTagName('nom').item(0).textContent;
    var adresse1 = (markers[i].getElementsByTagName('adresse1').item(0).text) ? markers[i].getElementsByTagName('adresse1').item(0).text : markers[i].getElementsByTagName('adresse1').item(0).textContent;
    var adresse2 = (markers[i].getElementsByTagName('adresse2').item(0).text) ? markers[i].getElementsByTagName('adresse2').item(0).text : markers[i].getElementsByTagName('adresse2').item(0).textContent;
    var idH = (!markers[i].getElementsByTagName('hot_id').item(0)) ? null : (markers[i].getElementsByTagName('hot_id').item(0).text) ? markers[i].getElementsByTagName('hot_id').item(0).text : markers[i].getElementsByTagName('hot_id').item(0).textContent;
    var type = markers[i].getAttribute('type');
    var des = (markers[i].getElementsByTagName('des').item(0).text) ? markers[i].getElementsByTagName('des').item(0).text : markers[i].getElementsByTagName('des').item(0).textContent;
		var mail = markers[i].getAttribute('mail');
		var image = markers[i].getAttribute('image');
		var urlresa = markers[i].getAttribute('resa');
		var url = markers[i].getAttribute('web');
		//si le site web est renseigner alors on affiche le lien sinon NON
		var lien_fiche = ( url != null && url != '') ? '<a href="'+url+'" target="_blank">Accédez à la fiche détaillée >></a>' : '' ;
		//si le mail est renseigner alors on affiche le lien sinon NON
		var lien_mail = ( mail != null && mail != '') ? '<a href="mailto:'+mail+'">'+mail+'</a>' : '';
		
		var contact = '<div id="presGmap"><h2>'+nom+'</h2><p>'+adresse1+'<br />'+adresse2+'<br />'+des+'</p><p>'+lien_mail+'<br />'+lien_fiche+'</p></div>';
		var photo = '<div id="photo"><img src='+image+' height=180px/></div>';
		
		// The info window version with the "to here" form open
    var html = '<div id="formulaire"><b>Pour venir :</b><br /><br />' +
               'Veuillez indiquer votre adresse de départ :<form action="javascript:getDirections()">' +
	             '<span class="exemple">Ex : Avenue du président pierre angot pau</span><br /><br />'+
               '<input type="text" size="47" maxlength="40" name="saddr" id="saddr" value="" /><br /><br />' +
               '<INPUT value="Calculer votre itinéraire" type="submit" id="submit">' +
               '<input type="hidden" id="daddr" value="'+nom+"@"+ point.lat() + ',' + point.lng() + '"/></div>';
    
    switch(type)
    {
      case 'hotel':
        var img = 'http://www.hotel-toulouse-reservation.com/fileadmin/templates/img/ico_hotel.png';
      break;
      case 'aeroport':
        var img = 'http://www.hotel-toulouse-reservation.com/fileadmin/templates/img/ico_aeroport.png';
      break;
      case 'gare':
        var img = 'http://www.hotel-toulouse-reservation.com/fileadmin/templates/img/ico_gare.png';
      break;
      case 'visite':
        var img = 'http://www.hotel-toulouse-reservation.com/fileadmin/templates/img/ico_visite.png';
      break;
    }
    var icone = new google.maps.MarkerImage(img,new google.maps.Size(15,20), new google.maps.Point(0,0),new google.maps.Point(8,0));
    markerA[i] = createMarker(point,type,icone,nom,contact,idH);
  }
}
function createMarker(point,type,icone,nom,content,idH){
  var infowindow = new google.maps.InfoWindow();
  var markers = new google.maps.Marker({
    position: point,
    map: map,
    icon: icone,
    title: nom
  });
  markers.type = type;
  markers.idH = idH;
  google.maps.event.addListener(markers, 'click', function() {
      markerClick(this.getPosition());
      google.maps.event.addListener(infowindow,'closeclick',function(){
      initMap();
    });
    infowindow.setContent(content);
    infowindow.setPosition(this.getPosition());
    infowindow.open(map);
  });
  return markers;
}
function markerClick(pos)
{
  map.setCenter(pos);
  var zoom_x = zoom;
  map.setZoom(14);
  zoom = zoom_x;
}
var grow = function growMap(){
  $('grow').removeEvent('click',grow);
  $('carte').setStyle('position','absolute');
  $('carte').setStyle('right','36px');
  rightCol = $chk($('right-col')) ? $('right-col') : $('right-col2');
  leftCol = $chk($('left-col')) ? $('left-col') : $('left-col2');
  rightCol.getChildren('div')[1].setStyle('margin-top',$('carte').getSize().y+20+'px')
  var morphCarte = new Fx.Morph($('carte'));
  var morphMap = new Fx.Morph($('mask-map'));
  var myFx3 = new Fx.Tween(rightCol.getChildren('div')[1]);
  var myFx4 = new Fx.Tween(leftCol.getChildren('div')[0]);
  morphCarte.start({
  	'width': 944,
  	'height': $('carte').getSize().y+200
  });
  myFx3.start('margin-top',$('carte').getSize().y+220+'px');
  myFx4.start('margin-top',$('carte').getSize().y+220+'px');
  morphMap.start({
  	'width': 812,
  	'height': 550
  }).chain(function(){
    $('grow').set('text',trad['reduire'][langue]);
    $('grow').addEvent('click',shrink);
  });
  centerMap(0,0);
}
var shrink = function shrinkMap(){
  rightCol = $chk($('right-col')) ? $('right-col') : $('right-col2');
  leftCol = $chk($('left-col')) ? $('left-col') : $('left-col2');
  width = $chk($('left-col')) ? 584 : 620;
  width2 = $chk($('left-col')) ? 452 : 488;
  $('grow').removeEvent('click',shrink);
  var morphCarte = new Fx.Morph($('carte'));
  var morphMap = new Fx.Morph($('mask-map'));
  var myFx3 = new Fx.Tween(rightCol.getChildren('div')[1]);
  var myFx4 = new Fx.Tween(leftCol.getChildren('div')[0]);
  morphCarte.start({
  	'width': width,
  	'height': $('carte').getSize().y-200
  });
  myFx3.start('margin-top','370px').chain(function(){
    $(rightCol.getChildren('div')[1]).setStyle('margin-top','0');
  });
  myFx4.start('margin-top','0px');
  morphMap.start({
  	'width': width2,
  	'height': 350
  }).chain(function(){
    $('grow').set('text',trad['agrandir'][langue]);
    $('grow').addEvent('click',grow);
    $('carte').setStyle('position','relative');
    $('carte').setStyle('right','auto');
  });  
  centerMap(width2-812,-200);  
}

function hideType()
{
  var type = this.getProperty('class').split(' ')[0];
  var act = (this.hasClass('act')) ? true : false;
  var total = markerA.length;
  for(var j = 0; j<total;j++)
  {
    if(markerA[j].type == type && act)
      markerA[j].setVisible(false);
    else if(markerA[j].type == type)
      markerA[j].setVisible(true);
  }
  if(act)
  {
    this.removeClass('act');
    this.addClass('dact');
  }
  else
  {
    this.removeClass('dact');
    this.addClass('act');
  }
}

function geoloc()
{
  var idH = this.getProperty('idh');
  var total = markerA.length;
  for(var j = 0; j<total;j++)
  {
    if(markerA[j].idH == idH)
    {
      google.maps.event.trigger(markerA[j],'click',function(){markerClick(markerA[j].getPosition);});
      return;
    }
  }
}

function onglets()
{
  $('tabsContent').getChildren('div').each(function(item,index){
      item.setStyle('left','-5000px');
  });
  $$('#tabs a').each(function(item,index){
    item.addEvent('click',function(){
      showTab(index);
    });
  });
  showTab(0);
}

function showTab(index){
  $('tabsContent').getChildren('div').each(function(item,i){
    if(i==index)
    {
      item.setStyle('left','20px');
      $('tabsContent').setStyle('height',item.getSize().y+20);
    }
    else
      item.setStyle('left','-5000px');
  });
  $$('#tabs a').each(function(item,i){
    if(i==index)
      item.getParent().addClass('rgtabs-selected');
    else if(item.getParent().hasClass('rgtabs-selected'))
      item.getParent().removeClass('rgtabs-selected');
  });
}

function mapFiche()
{
  var geocoder = new google.maps.Geocoder();
  var lat = $('mapFiche').getProperty('lat');
  var lng = $('mapFiche').getProperty('lng');
  var nom = $('fiche').getElement('h2').get('html');
  var center = new google.maps.LatLng(lat,lng);
  var img = 'fileadmin/templates/img/ico_hotel.png';
  var icone = new google.maps.MarkerImage(img,new google.maps.Size(15,20), new google.maps.Point(0,0),new google.maps.Point(8,0));
  var zoom = 13;
  var myOptions = {
    zoom: zoom,
    center: center,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  }
  mappy = new google.maps.Map(document.getElementById('mapFiche'), myOptions);
  
  var markers = new google.maps.Marker({
    position: center,
    map: mappy,
    icon: icone,
    title: nom
  });
}

function hideAllRoom()
{
  $$('#liste-hotel table').each(function(item){
    if(item.getElements('tbody tr').length > 1)
    {
      item.getElements('tbody tr').each(function(item2,index){
        if(index>0)
          item2.setStyle('display','none');
      });
    }
    else
    {
      item.getElement('.offreTotal').setStyle('display','none');
    }
  });
}
function showAllRoomHotel()
{
    this.getParent().getParent().getParent().getParent().getElement('tbody').getElements('tr').each(function(item2,index){
      if(index>0)
        item2.setStyle('display','table-row');
    });
    this.removeEvent('click',showAllRoomHotel);
    this.addEvent('click',hideAllRoomHotel);
    this.set('html',trad['reduiretotaloffre'][langue]);
}
function hideAllRoomHotel()
{
    this.getParent().getParent().getParent().getParent().getElement('tbody').getElements('tr').each(function(item2,index){
      if(index>0)
        item2.setStyle('display','none');
    });
    this.removeEvent('click',hideAllRoomHotel);
    this.addEvent('click',showAllRoomHotel);
    this.set('html',trad['totaloffre'][langue]);
}
  
window.addEvent('domready',function(){
  getL();
  if($chk($('carte')))
  {
    $$('#legende a').each(function(item){item.removeProperty('href');});
    $$('#legende ul a').each(function(item){item.addClass('act');item.addEvent('click',function(){var hide = hideType.bind(item);hide();});});
    $('grow').addEvent('click',grow);
    initialize();
  }
  $$('a.geoloc').addEvent('click',geoloc);
  
  if($chk($('onglets')))
  {
    onglets();
  }
  if($chk($('mapFiche')))
  {
    mapFiche();
  }
  if($chk($('liste-hotel')))
  {
    $$('a.offreTotal').addEvent('click',showAllRoomHotel);
    $$('a.offreTotal').removeProperty('href');
    hideAllRoom();
  }
  $$('a.back').addEvent('click',function(){window.history.back();});
  if($chk($('new')))
  {
  	var nS = new noobSlide({
  			box: $('new'),
  			items: $$('#new div'),
  			size: parseInt($('new').getFirst('div').getStyle('width')),
  			autoPlay: true,
  			fxOptions: {
  				duration: 1000,
  				wait: false
  			},
  			addButtons: {
  				previous: $('prev'),
  				next: $('next')
  			}
  		});
  }
});
