/*
 * jQuery.centerInClient
 * Original author unkown.
 *
 * Modified version infos:
 * Author   Lucido Media GbR
 * Since    2008-12-14 14:35h
 * Version  2008-12-14 14:35h
 */
jQuery.fn.centerInClient=function(A){var B={forceAbsolute:false,container:window,completeHandler:null};$.extend(B,A);return this.each(function(E){var G=$(this);var F=$(B.container);var D=B.container==window;if(B.forceAbsolute){if(D){G.remove().appendTo("body")}else{G.remove().appendTo(F.get(0))}}G.css("position","absolute");var H=D?2:1.8;var C=(D?F.width():F.outerWidth())/2-G.outerWidth()/2;var I=(D?F.height():F.outerHeight())/H-G.outerHeight()/2;if(C<0){C=0}if(I<0){I=0}G.css("left",C+F.scrollLeft());G.css("top",I+F.scrollTop());if(B.completeHandler){B.completeHandler(this)}})};
/*
 * Dynamics for Template LM-Porofin-v1
 * Lucido Media GbR
 */
jQuery(function($)
{
  // GENERAL //////////////////////////////////////////////////////////

  //hide default textbox content on click
  $('input.text').each(function()
  {
    $(this).attr('alt',$(this).val())
    .focus(function()
    {
      if( $(this).val() == $(this).attr('alt') )
        $(this).val('');
    })
    .blur(function()
    {
      if( $(this).val() == '' )
        $(this).val($(this).attr('alt'));
    });
  });

  //hover for old browsers
  $('input.button').hover(
    function(){ $(this).addClass('hover');    },
    function(){ $(this).removeClass('hover'); }
  );

  //efficient global vars
  var location = window.location.href;

  //open pdfs in new tab
  $('a[href$=".pdf"]').click(function(){ this.target='_blank'; });


  //rounded corners
  function corners(el,rad)
  {
    rad = rad || '.3em';
    $(el).css(
    {
      'border-radius'         : rad,
      '-moz-border-radius'    : rad,
      '-webkit-border-radius' : rad,
      '-khtml-border-radius'  : rad
    });
  }
  corners('input.text,select,textarea');

  $('#side-1').append(
    '<div class="box">'+
      '<img src="http://porofin.de/img/side1-box-versandkostenfrei.png" alt="Deutschlandweit Versandkostenfrei ab 250&euro;" />'+
    '</div>'
  )


  // MAINPAGE /////////////////////////////////////////////////////////

  if( $('#info-1').length )
    (function()
    {
      /*
      * add transparent layer to infoboxes
      */
      $('.info-sub[id^=info-1]').wrapInner('<div class="trans"></div>')
      .find('.trans').css({'background':'#fff','opacity':'0.75','height':'276px','width':'37%','padding':'0 10px 0 10px','font-size':'12px','overflow':'hidden','border':'1px solid #ccc','border-top':'0','border-bottom':'0'})
      .find('a').css({'display':'block','width':'100%','text-align':'right'});
      $('#info-1-sub-1 .trans').css('margin-left','10px');
      $('#info-1-sub-2 .trans').css('margin-left','370px');
      $('#info-1-sub-3 .trans').css('margin-left','10px');
      $('#info-1-sub-4 .trans').css('margin-left','370px');

      /*
      * merge infoboxes & build carousel
      */
      var slide_start_timeout   = 0;     //additional time before 1st start
      var slide_interval        = 10000; //slide each msec (not including animation time)
      var slide_duration        = 1000;  //time for 1 slide
      var slide_debug           = false; //show all elements

      //prepare the holding element
      var w = $('.info-sub[id^=info-1]').length * $('.info-sub[id^=info-1]').width() + 'px';
      $('#info-1').wrapInner('<div class="js-wrap" style="width:'+w+'; position:relative;"></div>');
      if( !slide_debug )
        $('#info-1').css({'overflow':'hidden','position':'relative'})

      //insert children
      $('.info-sub[id^=info-1]').removeClass('info').addClass('left').appendTo('#info-1 .js-wrap');

      //animation
      var slideshow_timer = null;
      var slide_max_left  = w.replace(/px/,'') * -1;
      var slide_act_left  = 0;
      var slide_step      = $('.info-sub[id^=info-1]').width();
      var el_wrap         = $('#info-1 .js-wrap');
      //prevent flickerin at 1st slide
      el_wrap.stop().animate({'left' : 0},slide_duration,'swing', function(){});
      slide = function()
      {
        slide_stop();

        slide_act_left -= slide_step;
        if( slide_act_left <= slide_max_left )
        {
          slide_act_left = 0;

          el_wrap.stop()
          .fadeOut(
            slide_duration,
            function()
            {
              el_wrap.css('left','0px').fadeIn(
                slide_duration,
                function()
                {
                  if( $.browser.msie )
                    el_wrap.get(0).style.removeAttribute('filter'); //fix ie cleartype glitch
                  slide_start();
                }
              );
            }
          );
        }
        else
        {
          el_wrap.stop()
          .animate(
            {'left' : slide_act_left},
            slide_duration,
            'swing',
            function(){slide_start();}
          );
        }
        //alert(left + '|' + slide_max_left);
      }
      function slide_start()
      {
        slideshow_timer = window.setInterval('slide()',slide_interval);
      }
      function slide_stop()
      {
        window.clearInterval(slideshow_timer);
      }
      setTimeout(function(){slide_start()},slide_start_timeout);
      $('#info-1').hover( function(){slide_stop();}, function(){slide_start();} );

    })();

  // VERTRIEBSPARTNER /////////////////////////////////////////////////
  if( location.indexOf('/vertriebspartner/') !== -1 && $('#gmap').length )
    (function()
    {
      // GMAP //
      var $map        = $('#gmap').css({'width':'600px', 'height':'300px', 'border':'2px solid #d8d8d8'}),
          $destlist_a = $('.dest-list li a'),
          map         = new GMap2($map.get(0)),
          marker_icon = new GIcon(G_DEFAULT_ICON),
          init_dest   = new GLatLng(50.958427,9.052734), //middle of germany
          init_zoom   = 5;
      if( location.indexOf('/weltweit.html') !== -1 )
      {
        init_dest = new GLatLng(45.7670199,35.0561346) //dont ask...
        init_zoom = 3;
      }
      map.setCenter(init_dest, init_zoom);


      $destlist_a.each(function()
      {
        var lat = lng = false,
            href      = $(this).attr('href').replace(/#([0-9.]+);([0-9.]+)/,function(all,a,b){lat=a; lng=b; return all;}),
            marker    = new GMarker(new GLatLng(lat,lng), marker_icon);

        map.addOverlay(marker);
        GEvent.addListener(marker,'click',function()
        {
          // why is this 0 ? :
          // var dest = this.getLatLng();
          // $destlist_a.find('[href$="#'+dest.y+';'+dest.x+'"]').length
          window.location.href = href;
        });
      });

      // SEARCH //
      if( location.indexOf('/vertriebspartner/index.html') !== -1)
        (function()
        {
          $('.dest-list h3').addClass('clear spaced').before(
            '<form action="#" method="get"><p class="spaced">'+
             'Finden Sie einen Stützpunkt in Ihrer Nähe.<br />'+
             '<label for="search-plz">Ihre PLZ:</label> '+
             '<input class="text" id="frm-search-plz" name="frm-search-plz" value="" /> '+
             '<input class="button" style="margin-left:0.3em" type="submit" value="" alt="Suchen" /> '+
             '<span id="frm-search-reset-wrap">| <a href="#" id="frm-search-reset">Suche löschen</a></span>'+
            '</p></form>'
          ).after('<p class="search-info"></p>')
          .parent().find('#frm-search-reset-wrap').hide()
          .end().find('form').submit(function()
          {
            var $dest_list   = $(this).parent(),
                $input       = $('#frm-search-plz',this),
                $search_info = $dest_list.find('.search-info'),
                plz          = $input.val().trim(),
                plz_len      = plz.length,
                num_results  = 0,
                $a           = $dest_list.find('ul a').each(function()
                {
                  var list = $(this).html().match(/\<\!-- plz\:(.*?) --\>/)[1].split(';'),
                      i, i_max;
                  for(i=0,i_max=list.length; i<i_max; ++i)
                  {
                    if( list[i] && plz.indexOf(list[i].substr(0,plz_len)) === 0 )
                    {
                      $(this).parent('li').addClass('visible');
                      num_results++;
                      break;
                    }
                  }
                });

            $dest_list.find('li').show()
            .not('.visible').hide()
            .end().removeClass('visible');

            if( num_results )
            { $search_info.text( num_results + ' Ergebnisse gefunden.'); }
            else
            { $search_info.text('Leider nichts gefunden.'); }

            $('#frm-search-reset-wrap',this).show().click(function(){ $input.val(''); $search_info.text(''); $a.parent('li').show(); $(this).hide(); return false; });
            if( !plz_len )
            { $('#frm-search-reset-wrap',this).click(); }

            return false;
          });
          corners('.dest-list #frm-search-plz');
        })();

    })();

  // SPERRSYSTEME /////////////////////////////////////////////////////
  else if( location.indexOf('/sperrsysteme.html') !== -1 )
    (function()
    {
      //FIXME: enable jump on pageload (via hash)
      var $els = $('.jumpable').not(':first').hide().end();
      $('.jumpmenu a').click(function()
      {
        $els.hide(500).filter( $(this).attr('href') ).show(500);
        return false;
      });
    })();
  // ERFAHRUNGEN //////////////////////////////////////////////////////
  else if( location.indexOf('/erfahrungen.html') !== -1 )
    (function()
    {
      var $frm = $('#gb-form').hide();
      $('a[href=#gb-form]').click(function(){ $frm.slideToggle(400); return false; });
    })();

  // PRODUCTS PAGE ////////////////////////////////////////////////////
  else if( $('.buy.box').length )
    (function()
    {
      //dynamic price-headers
      $('.buy.box select').change(function()
      {
        var el_header = $(this).parent('.buy.box').find('.header');

        //prepare header for reset
        if( !el_header.find('.price_org').length )
          el_header.html('<span class="price_org">'+el_header.text()+'</span><span class="price"></span><span class="border"></span>');

        //get contents
        var price           = $(this).find('option:selected:contains("EUR")').text().replace(/^\s*.*?([0-9,]+\s*EUR\s*)$/,'$1');
        var header_txt      = el_header.find('span:visible').text();
        var header_txt_pre  = header_txt.replace(/^\s*(.*?)[0-9,]+\s*EUR\s*$/,'$1');

        //insert new price into header
        if( price == '' )
          el_header.find('.price_org').show().next('.price').hide().text('');
        else
          el_header.find('.price_org').hide().next('.price').show().text(header_txt_pre+price);
      });

      $('.buy.box small').after('<div class="js-loading" style="display:none; text-align:center; margin:.5em 0;"><img alt="bitte warten" src="http://porofin.de/shop/templates/lm-porofin-v1/img/ajax-loader.gif" /></div>');
      $('#main form').submit(function()
      {
        $.ajaxSetup(
        {
          'cache'       : false,
          'dataType'    : 'text',
          'processData' : false,
          'beforeSend'  : function(){$('.buy.box .js-loading').show();},
          'complete'    : function(){$('.buy.box .js-loading').hide();}
        });

        $.post( $(this).attr('action'), $(this).serialize(), function(data,status)
        {
          if( status === 'success' && (data = data.match(/<div id="basket"[^>]*>.*?<\/div>/)) )
          {
            if( $('#side-1 #basket').length )
              $('#side-1 #basket').replaceWith(data[0]);
            else
              $('#side-1 .box:eq(1)').after(data[0]);
          }
        });

        return false;
      });

      //add to card img
      if( !$.browser.msie || $.browser.msie && parseInt(jQuery.browser.version) > 6 )
      {
        $('.buy.box small').attr('style','width:110px; display:block; float:right; text-align:right; line-height:1.25em; margin-bottom:.5em;').before('<img class="left" src="http://porofin.de/shop/templates/lm-porofin-v1/img/middle-main-basket.png" />').after('<div class="clear"></div>').html( $('.buy.box small').html().replace(/(MwSt\.)/,'$1<br />') );
      }

      //begin : verbrauchs-calc
      $('#main a[href*="verbrauchstabelle.html"]').click(function()
      {
        if( $('#verbrauchs-calc').length )
          return false;

        $('#main').append(
          '<div id="verbrauchs-calc" style="width:25em; padding:.5em; background:#fafafa; border:1px solid #ae1217;">'+
            '<a class="right close" href="#">[schlie&szlig;en]</a>'+
            '<strong>Porofin-Verbrauchsrechner</strong><br /><br />'+
            '<label>Wandl&auml;nge :</label>  <input class="text" name="calc-wall-length"     value="" /><span class="left">&nbsp;cm</span>'+
            '<label>Wanddicke :</label>       <input class="text" name="calc-wall-thickness"  value="" /><span class="left">&nbsp;cm</span>'+
            '<label>Wandecken :</label>       <input class="text" name="calc-wall-corners"    value="" />'+
            '<label>Berechnen</label>         <div class="left" style="width:10em"><input class="refresh button" type="button" value="" /></div>'+
            '<div class="clear"></div><br />'+
            '<p class="result-wrapper" style="display:none">'+
              'Sie ben&ouml;tigen ca. <span class="result">XY</span> Flaschen.&nbsp;&nbsp;'+
              '<a href="#" class="proceed"><strong>&raquo;&uuml;bernehmen</strong></a>'+
            '</p>'+
          '</div>'
        )
        .find('#verbrauchs-calc').centerInClient()
        .find('input:first').focus()
        .end().find('.refresh').click(function()
        {
          var len     = $('#verbrauchs-calc input[name="calc-wall-length"]').val()    * 1;
          var thick   = $('#verbrauchs-calc input[name="calc-wall-thickness"]').val() * 1;
          var corners = $('#verbrauchs-calc input[name="calc-wall-corners"]').val()   * 1;

          var res_without_corners = thick * 0.1389 * len * 4 / 500;
          var res                 = thick * 13.89  * corners / 500 + res_without_corners;
          res = Math.floor(res * 100)/100;  //nachkommastellen > 2 abschneiden.
          res = Math.ceil(res)              //they say it has to be! oO

          if( isNaN(res) )
            res = '?';

          $('#verbrauchs-calc .result-wrapper').show().find('.result').text(res);

          return false;
        })
        .end().find('a.close').click(function()
        {
          $('#verbrauchs-calc').remove();
          return false;
        })
        .end().find('a.proceed').click(function()
        {
          $('#main input[name=products_qty]').val( $('#verbrauchs-calc .result').text() );
          $('#verbrauchs-calc a.close').click();
          return false;
        });
        corners('#verbrauchs-calc,#verbrauchs-calc input.text');

        return false;
      });
      //end : verbrauchs-calc

  })();


});