

window.addEvent('domready', function() {
   
});




var extraCategories = new Hash();
var availableExtras = {extras: new Hash()};
var selectedExtras  = {
   totalSelected : 0,
   inCatSelected : new Hash(),
   extras    : new Hash()
};

var extrasPrice = {
      value : 0,
      setValue: function (price) {
         this.value = price;
         pricestr = ""+price;
         $('divExtrasPrice').innerHTML = "&euro;"+this.getValueAsString();
         $('finalExtrasPrice').innerHTML = "&euro;"+this.getValueAsString();
      },
      clearValue: function () {
         $('divExtrasPrice').innerHTML = "";
      },
      getValue: function () {
         return this.value;
      },
      getValueAsString: function () {
         return AsValutaStr(this.value)
      }

   };


function AddExtraCategory(catId,name) {
   var cat = {
      id   : catId,
      name : name,
      activities : new Hash()
   }
   extraCategories.set('cat'+catId,cat);
   //alert(categories.length)
   selectedExtras.inCatSelected.set('cat'+catId,{value : 0});
}


function AddExtra(catId,extraId,name,price,minpers) {
   var extra = {
      id   : extraId,
      catId: "cat"+catId,
      name : name,
      price : price,
      minpers : minpers,
      isSelected: false,
      div  : $('extra'+extraId),
      setStatus: function (status) {
         div.addClass("status_"+status);
      },
      select: function() {
         this.div.addClass("selected");
         this.div.removeClass("doesnotfit");
         this.isSelected = true;
      },
      deselect: function() {
         this.div.removeClass("selected");
         this.isSelected = false;
      }
   }

   //divs =extra.div.getElementsByTagName("div");
   $('extra'+extraId+'Naam').addEvent('click', function() {
      SelectExtra(extra.div.id);
   }); 

   availableExtras.extras.set('extra'+extraId,extra);
   //categories.get('cat'+catId).extras.set('extra'+extraId,extra);
/*
   new MooTooltips({
      extra:{
         0: {
            'id':'extra'+extraId+'Info',
            'ajax':baseURL+'php/ajax.php?c-Object=extradp&c-Action=show&ID='+extraId,
            'ajax_message': 'Bezig met laden .....',
            'position':1,
            'sticky':false
         }
      },
      ToolTipClass:'ToolTips',   // tooltip display class
      toolTipPosition:-1, // -1 top; 1: bottom - set this as a default position value if none is set on the element
      sticky:false,     // remove tooltip if closed
      fromTop: 10,    // distance from mouse or object
      fromLeft: 10, // distance from left
      duration: 200,    // fade effect transition duration
      fadeDistance: 0    // the distance the tooltip starts the morph
   });
*/

}

function SelectExtra(id) {
   if (availableExtras.extras.has(id)) {
      HidePersonalData();
      var extra = availableExtras.extras.get(id)
      cp = extra.div.clone();
      cp.id = id+"Sel";
      cp.inject($('selectedExtras'));

      divs =cp.getElementsByTagName("div");
      divs[0].addEvent('click', function() {
         DeselectExtra(id);
      }); 

      imgs =cp.getElementsByTagName("img");
      imgs[0].id = id+"InfoSel"; 

      new MooTooltips({
         extra:{
            0: {
               'id':id+'InfoSel',
               'ajax':baseURL+'php/ajax.php?c-Object=extradp&c-Action=show&ID='+id.substr(5,10),
               'ajax_message': 'Bezig met laden .....',
               'position':1,
               'sticky':false
            }
         },
         ToolTipClass:'ToolTips',   // tooltip display class
         toolTipPosition:-1, // -1 top; 1: bottom - set this as a default position value if none is set on the element
         sticky:false,     // remove tooltip if closed
         fromTop: 10,    // distance from mouse or object
         fromLeft: 10, // distance from left
         duration: 200,    // fade effect transition duration
         fadeDistance: 0    // the distance the tooltip starts the morph
      });

      selectedExtras.extras.set(id,extra)
      selectedExtras.inCatSelected.get(extra.catId).value++;
      selectedExtras.totalSelected++;
      availableExtras.extras.erase(id);
      extra.select();

      SetStatusavailableExtras();
      CalculateExtrasPrice();
   }
}

function DeselectExtra(id) {
   HidePersonalData();
   $(id+"Sel").dispose();
   var extra = selectedExtras.extras.get(id)
   availableExtras.extras.set(id,extra)
   selectedExtras.extras.erase(id)
   selectedExtras.inCatSelected.get(extra.catId).value--;
   selectedExtras.totalSelected--;
   extra.deselect();
   SetStatusavailableExtras()
   CalculateExtrasPrice();
}

function GetExtraIds() { 
   ids = ""; 
   if (selectedExtras.extras.getLength() > 0) {
      selectedExtras.extras.each(function(extra,ndx) { 
         if (ids != "")
            ids += "|";
         ids += extra.id;
      });
   }
   return ids; 
} 

function CalculateExtrasPrice() { 
   price = 0; 
   selectedExtras.extras.each(function(extra,ndx) { 
      price += parseFloat(extra.price);
   });
   extrasPrice.setValue(price); 
}

function SetStatusavailableExtras() { 
} 

var firstTimeShowExtras = true; 
function ShowExtras() {
   HidePersonalData();  

   $('paneSelectExtras').style.display="block"; 

   if (firstTimeShowExtras) {
      firstTimeShowExtras = false;
      availableExtras.extras.each(function(extradp,ndx) { 

         new MooTooltips({
            extra:{
               0: {
                  'id':'extra'+extradp.id+'Info',
                  'ajax':baseURL+'php/ajax.php?c-Object=extradp&c-Action=show&ID='+extradp.id,
                  'ajax_message': 'Bezig met laden .....',
                  'position':1,
                  'sticky':false
               }
            },
            ToolTipClass:'ToolTips',   // tooltip display class
            toolTipPosition:-1, // -1 top; 1: bottom - set this as a default position value if none is set on the element
            sticky:false,     // remove tooltip if closed
            fromTop: 10,    // distance from mouse or object
            fromLeft: 10, // distance from left
            duration: 200,    // fade effect transition duration
            fadeDistance: 0    // the distance the tooltip starts the morph
         });
      });
   }

   myFx = new Fx.Scroll(window,{offset:{'x': 0,'y': -50}}).toElement('paneSelectExtras');
   //create our Accordion instance
   var extraAccordion = new Accordion($('availableExtrasContainer'), 'div.accCategorie', 'div.accList', {
      opacity: false,
      onActive: function(toggler, element){
         toggler.setStyle('color', '#009');
      },
      onBackground: function(toggler, element){
         toggler.setStyle('color', '#900');
      }
   });
//  slidePaneSelectExtras.slideIn();

}

function HideExtras() {
  HidePersonalData();  
  $('paneSelectExtras').style.display="none"; 
//  slidePaneSelectExtras.slideOut();
}

function CheckMinPersonenExtras(personen) { 
   showMsg = false; 
   selectedExtras.extras.each(function(extra,ndx) { 
      if (parseFloat(extra.minpers) > parseFloat(personen))
         showMsg = true;
   });
   if (showMsg) 
      alert("Waarschuwing: U heeft een of meerdere aanvullende diensten/produkten geselecteerd die alleen beschikbaar zijn voor grotere groepen. "); 
   return !showMsg; 
} 

function LeaveExtras() { 
   CheckMinPersonenExtras($('prefPersonen').value);
   ShowPersonalData();
} 


function AddFixedExtraTooltip(extraId) {

         new MooTooltips({
            extra:{
               0: {
                  'id':'extdp'+extraId+'Info',
                  'ajax':baseURL+'php/ajax.php?c-Object=extradp&c-Action=show&ID='+extraId,
                  'ajax_message': 'Bezig met laden .....',
                  'position':1,
                  'sticky':false
               }
            },
            ToolTipClass:'ToolTips',   // tooltip display class
            toolTipPosition:-1, // -1 top; 1: bottom - set this as a default position value if none is set on the element
            sticky:false,     // remove tooltip if closed
            fromTop: 10,    // distance from mouse or object
            fromLeft: 10, // distance from left
            duration: 200,    // fade effect transition duration
            fadeDistance: 0    // the distance the tooltip starts the morph
         });
}
