
/*  
 * Mardusa Room Selector
 */



/*

Berechnung Preise

	Die Preise werden aus einem HTML-table ausgelesen,
	der über TYPO3 eingepflegt werden kann. Die Struktur:

<div id="room-slider-pricelist">
  <div class="einstellungen">
    <div class="kurzbuchung_tage">3</div>
  </div>

  <div class="preisliste">
    <div class="doppel_als_einzel_zuschlag">30</div>
    <div class="kurzbuchung">10</div>
    <div class="zeitraeume">
		<a id="c182"></a>
		<div class="zeitbereich">
		  <!-- Eigenschaften -->
		  <div class="von">19.06.2010</div>
		  <div class="bis">26.06.2010</div>
                  <!-- Zimmer -->
		  <div class="preis_alpenrose">52</div>
		  ...
		  <!-- Kinderpreise -->
		  <div class="preis_kind_baby">9</div>
		  ...
	</div>
    </div>
  </div>
</div>

	- Variablen werden aus "einstellungen" ausgelesen
	- der passende Zeitraum und das aktuelle Zimmer werden gesucht
	- Auswählbares Datum nach Pauschale markieren und/oder Hinweis wenn ausserhalb
	- Kinderpreise berechnen 




Kinder-Auswahl
	- Anfangs alle select ausblenden, dann nach Eingabe von Anzahl Kinder jeweilige freischalten
	


*/

$(function() {

  /*  PREIS BERECHNEN
   *
   *
   */
  $.fn.preisBerechnen = function() {
    if($('#room-slider-all-inclusives .pauschale:not(:first)').filter('.active').length === 0) {
      var gesamt = 0;
      var erwachsene = 0;
      var kinder = 0;
      var zusatzkosten = 0;
      var zimmer = $('#room-slider-header').text().toLowerCase();
      var aktdatum = new Date();
      var tag_ms = (1 * 24 * 60 * 60 * 1000);
    
      // tagespreise loop
    
      startdatum = $('#mailformanreise').datepicker('getDate');
     
      // letzter tag wird nicht berechnet
      enddatum = new Date($('#mailformabreise').datepicker('getDate') - (1 * tag_ms));  
    
      aktdatum = startdatum;
      while(aktdatum <= enddatum) {
        $('.zeitbereich').each(function() {
      
          var von = $.datepicker.parseDate('dd.mm.yy', $(this).find('.von').text()); 
          var bis = $.datepicker.parseDate('dd.mm.yy', $(this).find('.bis').text()); 
        
          if(aktdatum < bis && aktdatum >= von) {
            //alert($(this).find('.von').text() + "-" + $(this).find('.bis').text());
            var aktzeitbereich = $(this);
            // Erwachsene
	           erwachsene += parseInt($(this).find('.preis_' + zimmer).text(), 10) *
                          parseInt($('#mailformanz_erwachsene').val(), 10);
            // Kinder
            $('.csc-mailform-field:has(select):visible select').each(function() {
              kinderkat = $(this).val().substring($(this).val().lastIndexOf("_"));
              kinder += parseInt($(aktzeitbereich).find('.preis_kind_' + kinderkat).text(), 10);
            });            
          }
        }); 
        
        aktdatum = Date.parse(aktdatum) + (1 * tag_ms);
        aktdatum = new Date(aktdatum); 
               
      }
      var sonstiges = 0;
      gesamt = erwachsene + kinder + sonstiges;
    
      $('#hiddenFields').show();
      $('#hiddenFields .csc-mailform-field:first').html(
        "Preis gesamt: " + gesamt + " EUR<br/>"  
      ).css({
        fontWeight:'bold',
        fontSize: '120%',
        marginBottom:'10px'
      }); 
      $('#mailformpreis').val(gesamt);
//      $('#mailformpauschale').val();
      return gesamt;  
    } else {
      $('#hiddenFields').show();
      $('#hiddenFields .csc-mailform-field:first').html(
        "Preis kann nicht automatisch berechnet werden<br/>Das Angebot wird ihnen per Mail zugesendet."  
      ).css({
        fontWeight:'bold',
        fontSize: '80%',
        marginBottom:'10px'
      }); 
      
      $('#mailformpreis').val(0);
      return 0;
    }
  };	

  $.fn.showDivOnScreen = function(el) {
    $('#room-slider-pics-screen').html(''); 
    $('#room-slider-pics-screen').append(el);
  };
  


  /*
   * BILDERMENÜ
   *
   */      

  
  var pics_menu_html = "";
  if($('#room-slider-pano').text().length > 0) {
    var id = "pics-menu-pano-screen";
    $('#room-slider-pics-menu').append('<div id="' + id + '">Interaktives Panorama' /* + $('#room-slider-pano').text() */ + '</div>');
    $("#" + id).click(function() {
      $(this).showDivOnScreen('<div id="room-slider-pano-screen"></div>');

      var roomname = $('#room-slider-header').text();
      var pano = $('#room-slider-pano').text();
      var width = $('#room-slider').innerWidth() - $('#room-slider-nav').outerWidth();
      var height = width/3*2;
      if (swfobject.hasFlashPlayerVersion("6.0.0")) 
      {
        swfobject.embedSWF("/fileadmin/templates/webpics/panoramen/" + pano + ".swf", 'room-slider-pano-screen', 
                           width, height, "9.0.28", 
                           "js/expressInstall.swf", 
                           /* {pano:"test.xml"}, */
                           {allowfullscreen:true, bgcolor:"#000000",
                           wmode:"transparent", base:"/fileadmin/templates/webpics/panoramen/"}, 
                           {id:'room-slider-pano-screen', name:'room-slider-pano-screen', wmode:'transparent',base:"/fileadmin/templates/webpics/panoramen/"});
                          
        //swfkrpanomousewheel.registerObject("room-slider-pano");
      }
      else
      {
        document.getElementById("room-slider-pano-screen").innerHTML = 
                                'Flash Player 9 notwendig';
      }
    });    

  }

  $('#room-slider-images .csc-textpic').each(function() {
    var id = "pics-menu-pic-" + $(this).prev().text();
    var el = $(this);
    $('#room-slider-pics-menu').append('<div id="' + id + '">' + $(this).prev().text() + '</div>');
    $("#" + id).click(function() {
      $(this).showDivOnScreen($(el));
      
    });        

  }); 

  var width = $('#room-slider').innerWidth() - $('#room-slider-nav').outerWidth() - 10;
  var height = width/3*2;
  $('#room-slider-screen').css({ 
    width: width + "px" /* ,
    height: height + "px" */
  });
  
  $('#room-slider-pics-menu div:first').trigger('click');

  
  /*
   * PANORAMA
   *
     if($('#room-slider-pano').text().length > 0) {
       var roomname = $('#room-slider-header').text();
       var pano = $('#room-slider-pano').text();
       var width = $('#room-slider').innerWidth() - $('#room-slider-nav').outerWidth();
       var height = width/3*2;
       if (swfobject.hasFlashPlayerVersion("6.0.0")) 
       {
         swfobject.embedSWF("/fileadmin/templates/webpics/panoramen/" + pano + ".swf", 'room-slider-pano', 
                            width, height, "9.0.28", 
                            "js/expressInstall.swf", 
                            {allowfullscreen:true, bgcolor:"#000000",
                            wmode:"transparent", base:"/fileadmin/templates/webpics/panoramen/"}, 
                            {id:'room-slider-pano', name:'room-slider-pano', wmode:'transparent',base:"/fileadmin/templates/webpics/panoramen/"});
                           
         //swfkrpanomousewheel.registerObject("room-slider-pano");
       }
       else
       {
         document.getElementById("room-slider-pano").innerHTML = 
                                 'Flash Player 9 notwendig';
       }
     }
 
   */      


  /*
   * Selectboxen für Kinderauswahl ausblenden
   *
   */
  anz = $('#mailformanz_kinder').val();
  // Wenn die Seite neu geladen wird, kann schon ein Wert im textfeld stehen.
  auswahl = $('#room-slider-form select[id^=mailformjg_kind]').filter(
    function(index) {
      if(index < anz) {
        $(this).parent().show();
      } else {
        $(this).parent().hide();
      }
    }
  );


  /*
   * Felder für persönliche Daten ausblenden
   *
   */
   
  // wenn gefunden: alle nachfolgenden felder verstecken
  var pd_berechnenButton = 0;
  
  $('#mailformpreisBerechnen').parent().before("<div id='visibleFields'></div>"); 
  $('#mailformpreisBerechnen').parent().after("<div id='hiddenFields'></div>"); 
  $('#room-slider-form .csc-mailform-field').each(
    function() {

      if(pd_berechnenButton > 0) {
        $('#hiddenFields').append($(this).remove());
      } else {
        $('#visibleFields').append($(this).remove());
      }
            
      // ab jetzt felder verstecken 
      if($(this).find('#mailformpreisBerechnen').length == 1) {
        pd_berechnenButton = 1;
      }
    }
  );

  /* ONCHANGE anz_kinder
   *
   * Auswahl für Kinder anzeigen
   *
   */
  $('#mailformanz_kinder').change(function() {
    anz = $(this).val();
    
    auswahl = $('#room-slider-form select[id^=mailformjg_kind]').filter(
      function(index) {
        if(index < anz) {
          $(this).parent().show();
        } else {
          $(this).parent().hide();
        }
      }
    );
    
    $(auswahl).each(function() {
      $(this).parent().show(0);
    });
  });
    


  /*
   * DATE PICKER
   *
   */

   // Minimales und maximales Datum ermitteln
   var minD = new Date(2099, 1 - 1, 1); // Heute
   var maxD = new Date(2009, 1 - 1, 1);   
   $('.zeitbereich .von').each(function() {
      d = $.datepicker.parseDate('dd.mm.yy', $(this).text()); 
      if(d < minD){
        minD = d;
      }
   });
   $('.zeitbereich .bis').each(function() {
      d = $.datepicker.parseDate('dd.mm.yy', $(this).text()); 
      if(d > maxD){
        maxD = d;
      }
   });
   
   $('#mailformanreise').datepicker({
     minDate: $.datepicker.formatDate('dd.mm.yy', minD),
     maxDate: $.datepicker.formatDate('dd.mm.yy', maxD),
     
     onSelect: function() {
       if($('#mailformabreise').val().length === 0) {
         // Wenn noch kein Datum vorhanden - auf Datum der Anreise setzen 
         $('#mailformabreise').datepicker('option', 'defaultDate', $(this).datepicker('getDate'));
       } else {
         // Ansonsten Check, ob kleiner
         if($(this).datepicker('getDate') >= $('#mailformabreise').datepicker('getDate')) {
           alert("Die Anreise kann nicht nach der Abreise sein. Bitte ein neues Datum auswählen!");
           $(this).val('');
	   return false;           
         }  
       }
     }

   });

   $('#mailformabreise').datepicker({
     minDate: $.datepicker.formatDate('dd.mm.yy', minD),
     maxDate: $.datepicker.formatDate('dd.mm.yy', maxD),

     onSelect: function() {
       if($('#mailformanreise').val().length === 0) {
         // Wenn noch kein Datum vorhanden - auf Datum der Anreise setzen 
         $('#mailformanreise').datepicker('option', 'defaultDate', $(this).datepicker('getDate'));
       } else {
         // Ansonsten Check, ob kleiner
         if($(this).datepicker('getDate') < $('#mailformanreise').datepicker('getDate')) {
           alert("Die Abreise kann nicht vor der Anreise sein. Bitte ein neues Datum auswählen!");
           $(this).val('');
	   return false;           
         }  
       }

     }
   
   });
   


 /* PAUSCHALEN */
  $('#room-slider-all-inclusives').after("<div id='pauschale_description'></div>");
  $('#pauschale_description').hide(0);

  $('.pauschale').click(function() {
    if(!$(this).hasClass('active')) {
      $('#pauschale_description').html(
        $(this).find('.beschreibung').html()
      );
      $('.pauschale').removeClass('active');
      $(this).toggleClass('active');

      // Pauschale einstellen
      $( "#mailformpauschale" ).val($(this).find('.name').text());

      // Datepicker einstellen
      $( "#mailformanreise, #mailformabreise" ).datepicker( "option", "minDate", 
               $( this ).find( '.von' ).text()
      );
      $( "#mailformanreise, #mailformabreise" ).datepicker( "option", "maxDate", 
               $( this ).find( '.bis' ).text()
      );
    } else {
      $(this).toggleClass('active');
      // Pauschale zurücksetzen
      $( "#mailformpauschale" ).val("Keine Pauschale");

      // Minimales und maximales Datum ermitteln
      var minD = new Date(2099, 1 - 1, 1); // Heute
      var maxD = new Date(2009, 1 - 1, 1);   
      $('.zeitbereich .von').each(function() {
         d = $.datepicker.parseDate('dd.mm.yy', $(this).text()); 
         if(d < minD){
           minD = d;
         }
      });
      $('.zeitbereich .bis').each(function() {
         d = $.datepicker.parseDate('dd.mm.yy', $(this).text()); 
         if(d > maxD){
           maxD = d;
         }
      });      
      
      // Datepicker zurücksetzen
      $( "#mailformanreise, #mailformabreise" ).datepicker( "option", "minDate", 
               $.datepicker.formatDate('dd.mm.yy', minD)
      );
      $( "#mailformanreise, #mailformabreise" ).datepicker( "option", "maxDate", 
               $.datepicker.formatDate('dd.mm.yy', maxD) 
      );
    }
    $(this).preisBerechnen();

  });

  $('#room-slider-all-inclusives-show').parent().click(function() {
    $('#room-slider-all-inclusives').toggle();
    $('#pauschale_description').toggle(0);
    $('#room-slider-all-inclusives-show').toggle();
    $('#room-slider-all-inclusives .pauschale:first').trigger("click");
  });

  $('#room-slider-all-inclusives').mouseout(function() {
    if($('.pauschale.active').length === 0) {
      $('#pauschale_description').html('');
    } else {
      $('#pauschale_description').html($('.pauschale.active').find('.beschreibung').html());
    }
  });
  
  $('.pauschale').mouseover(function() {
     $('#pauschale_description').html($(this).find('.beschreibung').html());
  });



  $('#mailformpreisBerechnen').click(function() {
    $(this).preisBerechnen();
    return false;
  });






  /* Bilderauswahl */


  $('#room-slider-images, room-slider-graphics div').each(function() {
    if($(this).find('')) {
      // images
    } else {
      // pano
    }
  }); 

  $('#mailformzimmer').val($('#room-slider-header').text());


});
