var menuimg=0;
var searchRequest = false;
var lastSearchQuery;
var waitbeforesearch = 1500;
var footerPresent = true;
var menuclosetimeout=500;
var closetimer=0;
var menuitem=0;
var searchTimeout;
var sCache = {};
var tCache = {};
var lastSearchReq;
var count0 = 0;
var count2 = 0;

var positionFooter = function(ev) {
   var docHeight = $(document).height(); //Window height minus initial offset
   if( $('#left_sidebar').height() > docHeight ){
      docHeight = $('#left_sidebar').height();
   }
   if( $('#main_column').height() > docHeight ){
      docHeight = $('#main_column').height();
   }
   if( $('#searchresults').height() > docHeight ){
      docHeight = $('#searchresults').height();
   }
   if( $('#right_sidebar').height() > docHeight ){
      docHeight = $('#right_sidebar').height();
   }
   // Add the margin
   docHeight += 150;
   if(footerPresent){
      docHeight = docHeight - $('#footer').height();
   }
   $('#footer').css( { "top": ( docHeight ) + "px" } );
   footerPresent = true;
}


function navigationsList_open() {
   navigationsList_canceltimer();
   navigationsList_close();
   menuitem = $(this).find('ul').css('visibility', 'visible');
   menuimg = $(this).find('img').removeClass('linkArrow').addClass('stopArrow');
}

function navigationsList_close() {
   if(menuitem){
      menuitem.css('visibility', 'hidden');
      if(menuimg){
         menuimg.removeClass('stopArrow').addClass('linkArrow');
      }
   }
}

function navigationsList_timer() {
   closetimer = window.setTimeout(navigationsList_close, menuclosetimeout);
}

function navigationsList_canceltimer() {
   if(closetimer){
      window.clearTimeout(closetimer);
      closetimer = null;
   }
}

document.onclick = function() {
      navigationsList_close;
      $('.jquerybubblepopup').hide();
};

$(document).ready(function(){
   $('#navigationsList > li').bind('mouseover', navigationsList_open);
   $('#navigationsList > li').bind('mouseout',  navigationsList_timer);
   responseFlashFadeout();
   if ($('#containingArtikel').length>0) {
      $('#containingArtikel').html(replaceURLWithHTMLLinks($('#containingArtikel').html()));
   }
   $(window).resize(function(){
      $('.ui-notify').css({
         left: ($(window).width()- $('.ui-notify').outerWidth())/2
      });
      positionFooter();
   });
   // To initially run the function:
   $('.ui-notify').css({
      left: ($(window).width()- $('.ui-notify').outerWidth())/2
   });
   positionFooter();
   //-------------------------------------------------------
   ///*shows the loading div every time we have an Ajax call*/
   $("#onLoadingRequest").bind("ajaxSend", function(){
      if(!searchRequest){
         $(this).show();
      }
   }).bind("ajaxComplete", function( e, request, settings ){
      if(!searchRequest){
         $(this).fadeOut('fast');
      }
      var url = request.getResponseHeader( 'SESSION_TIMEOUT' );
      if( url && ($('#loginbox_titel').text().trim() === "Mein Konto" || parseInt($('#warenkorbanzahl').text()) > 0) ) {
         // header contains the string URL to redirect to
         $("#flashMessages").show().addClass('error').html("<div class='errorBig'><a class='ui-notify-close ui-notify-cross' href='#'>x</a><h1>Ihre Sitzung ist abgelaufen.</h1><p>Eine Sitzung bleibt 30 Minuten aktiv.</p><a href='http://kremplshop.de'>zur Startseite</a></div>");
         //setTimeout(function(){relo(url)}, 3000 );
         $('#warenkorbHolder').html("<h1>Ihre Sitzung ist abgelaufen.</h1><p>Der Warenkorb ist nun wieder leer!</p><a href='http://kremplshop.de'>zur Startseite</a>");
         $('#loginbox').html("<h1>Ihre Sitzung ist abgelaufen.</h1><p>Sie wurden abgemeldet!</p><a href='http://kremplshop.de'>zur Startseite</a>");
      }
   });
   //-------------------------------------------------------
   $('.page-dialog').live('click', function() {
       var link = $(this);
       var title = $(this).text();
       var dialog = $('<div></div>')
      .load(link.attr('href'))
      .dialog({
         autoOpen: false,
         width: 680,
         height: 430,
         modal: true,
         title: title
      });
      dialog.dialog('open');
      return false;
   });
   var dialog
   $('.registration-dialog').live('click', function() {
       var link = $(this);
       var title = $(this).text();
       dialog = $('<div></div>')
      .load(link.attr('href'))
      .dialog({
         autoOpen: false,
         width: 680,
         height: 680,
         modal: true,
         title: title,
         buttons: {
            "Abbrechen": function() {
               $(this).dialog( "close" );
            },
            "Speichern": function() {
               jQuery.ajax({
                  type:'POST',
                  data:jQuery('#registrationFormMain').serialize(),
                  url:'/webShopUser/registration',
                  success:function(data,textStatus){dialog.dialog( 'close' );flashShowAndHide() },
                  error:function(XMLHttpRequest,textStatus,errorThrown){}
               });
               return false;
            }
         },
         close: function() {
            return false;
         }
      });
      dialog.dialog('open');
      return false;
   });
   $('.toggleButton').live('click', function() {
         $(this).parent().parent().next().slideToggle("fast", function(){
            positionFooter();
         });
      return false;
   });
   $('.toggleMode').live('click', function(){
      $('.detailledItem').slideToggle(0, positionFooter());
      jQuery.ajax({
         type:'POST',
         url:'/produkt/toggleListMode',
         success:function(data,textStatus){positionFooter();},
         error:function(XMLHttpRequest,textStatus,errorThrown){}
      });
      return false;
   });
   $('.page-dialog-small').live('click', function() {
       var link = $(this);
       var title = $(this).text();
       var dialog = $('<div></div>')
      .load(link.attr('href'))
      .dialog({
         autoOpen: false,
         width: 680,
         height: 100,
         modal: true,
         title: title
      });
      dialog.dialog('open');
      return false;
   });

   $('.page-contact').live('click', function() {
       var link = $(this);
       var title = $(this).text();
       var dialog = $('<div></div>')
      .load(link.attr('href'))
      .dialog({
         autoOpen: false,
         width: 680,
         height: 450,
         modal: true,
         title: title
      });
      dialog.dialog('open');
      return false;
   });

   $('.page-dialog-big').live('click', function() {
       var link = $(this);
       var title = $(this).text();
       var dialog = $('<div></div>')
      .load(link.attr('href'))
      .dialog({
         autoOpen: false,
         width: 800,
         height: 800,
         modal: true,
         title: title
      });
      dialog.dialog('open');
      return false;
   });

   $('#openAltLieferadresse').click(function(){
      $('#altLieferadresse').slideToggle(0);
      if(!altLiefer) {
         $('#openAltLieferadresse').text("Keine abweichende Lieferadresse");
         $('#altLieferAdresseFlag').val("true");
         altLiefer = 1;
      }else{
         $('#openAltLieferadresse').text("Abweichende Lieferadresse");
         $('#altLieferAdresseFlag').val("false");
         altLiefer = 0;
      }
      positionFooter();
      return false;
   });

   $('.anschrift').live('click', function(){
      if($(this).parent('#AllAdressDaten').length == 0) {
         //Additional Lieferadresse
         $('.selectedLieferAnschrift').find('img').removeClass('checkbox-checked');
         $('.selectedLieferAnschrift').find('img').addClass('checkbox');
         $('.selectedLieferAnschrift').removeClass('selectedLieferAnschrift');
         $(this).addClass('selectedLieferAnschrift');
         $(this).find("img").removeClass('checkbox');
         $(this).find("img").addClass('checkbox-checked');
         $('#altLieferadresseID').val($(this).attr('id'));
         $(this).effect('highlight', {color:"#00FF00"}, 300);
      } else {
         // Addresse
         $('.selectedAnschrift').find('img').removeClass('checkbox-checked');
         $('.selectedAnschrift').find('img').addClass('checkbox');
         $('.selectedAnschrift').removeClass('selectedAnschrift');
         $(this).addClass('selectedAnschrift');
         $(this).find("img").removeClass('checkbox');
         $(this).find("img").addClass('checkbox-checked');
         $('#rechnungsadresseID').val($(this).attr('id'));
         $(this).effect('highlight', {color:"#00FF00"}, 300);
      }
      return false;
   });
   $('#searchreset').click(function(){
      $('#livesearch').val('').focus();
      console.log('Echo');
   });
   $('#openNewAddress').click(function(){
      $('#NewAddressDialog').dialog( "open"  );
      return false;
   });
   $('#NewAddressDialog').dialog({
      autoOpen: false,
      title: 'Neue Anschrift',
      width: 680,
      height: 510,
      modal: true,
      buttons: {
         "Abbrechen": function() {
            $(this).dialog( "close" );
         },
         "Speichern": function() {
            if(!$('#adresse\\.datenschutz').is(':checked')){
               $('#datenschutz-message').dialog({
                  modal:true,
                  buttons: {
                     Ok: function() {
                        $(this).dialog('close');
                        $('#adresse\\.datenschutz_box').effect('highlight', {color:"#FF3300"}, 3000);
                     }
                  }
               });
               return false;
            }
            jQuery.ajax({
               type:'POST',
               data:jQuery('#newAddressForm').serialize(),
               url:'/webShopUser/addAddress',
               success:function(data,textStatus){},
               error:function(XMLHttpRequest,textStatus,errorThrown){}
            });
            $(this).dialog( "close" );
            return false;
         }
      },
      close: function() {
         return false;
      }
   });
   $( "#dialog:ui-dialog" ).dialog( "destroy" );

   $('#EditAddressDialog').dialog({
      autoOpen: false,
      title: 'Anschrift &auml;ndern',
      width: 680,
      height: 470,
      modal: true,
      buttons: {
         "Abbrechen": function() {
            $(this).dialog( "close" );
         },
         "Speichern": function() {
            if(!$('#adresse\\.datenschutz').is(':checked')){
               $('#datenschutz-message').dialog({
                     modal:true,
                     buttons: {
                        Ok: function() {
                           $(this).dialog('close');
                           $('#adresse\\.datenschutz_box').effect('highlight', {color:"#FF3300"}, 3000);
                        }
                     }
               });
               return false;
            }
            jQuery.ajax({
               type:'POST',
               data:jQuery('#editAddressForm').serialize(),
               url:'/webShopUser/editAddress',
               success:function(data,textStatus){},
               error:function(XMLHttpRequest,textStatus,errorThrown){}
            });
            $(this).dialog( "close" );
            return false;
         }
      },
      close: function() {
         return false;
      }
   });
});

function openEditForm() {
   $('#EditAddressDialog').dialog( "open"  );
}

$('.warenkorb_edit_field').live('focusout', function(){
   jQuery.ajax({
      type:'POST',
      data:jQuery(this).serialize(),
      url:'/warenkorb/ajaxUpdate',
      success:function(data,textStatus){flashShowAndHide();},
      error:function(XMLHttpRequest,textStatus,errorThrown){}
   });
   return false
});

$('.tooltipbubble').live('mouseover', function(){
   $(this).CreateBubblePopup({
      position : 'right',
      align	 : 'center',
      innerHtml: $(this).attr('alt'),
      innerHtmlStyle: {
                     color:'#FFFFFF',
                     'text-align':'center'
                  },
      themeName: 	'all-black',
      themePath: 	'/css/images/jquerybubblepopup-theme'
   });
});
$('.tooltipbubble').live('mouseout', function(){
   $(this).RemoveBubblePopup();
});
$('.tooltipbubbletop').live('mouseover', function(){
   $(this).CreateBubblePopup({
      position : 'top',
      align	 : 'center',
      innerHtml: $(this).attr('alt'),
      innerHtmlStyle: {
                     color:'#FFFFFF',
                     'text-align':'center'
                  },
      themeName: 	'all-black',
      themePath: 	'/css/images/jquerybubblepopup-theme'
   });
});
$('.tooltipbubbletop').live('mouseout', function(){
   $(this).RemoveBubblePopup();
});
$('.tooltipbubbletopalign').live('mouseover', function(){
   $(this).CreateBubblePopup({
      position : 'top',
      align	 : 'center',
      innerHtml: $(this).attr('alt'),
      innerHtmlStyle: {
                     color:'#FFFFFF',
                     'text-align':'left'
                  },
      themeName: 	'all-black',
      themePath: 	'/css/images/jquerybubblepopup-theme'
   });
});

$('.loadOnRequestToggeable').live('click', function(){
   var thisDiv = $(this);
   var loadAlt = $(this).hasClass('loaded');
   var divToLoad = $(this).next();
   var urlToLoad = $(this).find('a').attr('href');
   if($(this).is('.hidden')) {
      $(this).next().show();
      if(!loadAlt) {
         jQuery.ajax({type:'POST', url:urlToLoad,
            success:function(data,textStatus){divToLoad.html(data);thisDiv.addClass('loaded');positionFooter();},
            error:function(XMLHttpRequest,textStatus,errorThrown){}}
         );
      }
      $(this).find('.maximiniOpen').removeClass('maximiniOpen').addClass('maximiniClose');
      $(this).removeClass('hidden');
   } else {
      $(this).next().hide();
      $(this).find('.maximiniClose').removeClass('maximiniClose').addClass('maximiniOpen');
      $(this).addClass('hidden');
   }
   positionFooter();
   return false;
});

$('.maximinimize').live('click', function(){
   if($(this).is('.hidden')) {
      $(this).next().show();
      $(this).find('.maximiniOpen').removeClass('maximiniOpen').addClass('maximiniClose');
      $(this).removeClass('hidden');
   } else {
      $(this).next().hide();
      $(this).find('.maximiniClose').removeClass('maximiniClose').addClass('maximiniOpen');
      $(this).addClass('hidden');
   }
   positionFooter();
   return false;
});

$('.ui-notify-message').live('click', function(){
   $(this).fadeOut('slow');
});

function flashShowAndHide(){
   flashShow();
   flashFadeout();
}

function flashShow(event) {
   $('#flashMessages').show();
}

function flashFadeout(event) {
   $('#flashMessages').delay(5000, function(){$('#flashMessages').fadeOut('slow')});
}

function responseFlashFadeout(event) {
   $('#responseFlashMessages').delay(5000, function(){$('#responseFlashMessages').fadeOut('slow')});
}

jQuery.fn.delay = function(time,func){
   return this.each(function(){
      setTimeout(func,time);
   });
};
/*
 * Search - Start
 */
function autoComplete( event, q){
   var code = (event.keyCode ? event.keyCode : (event.charCode ? event.charCode : -1 )); // Work around bug in event.which
   if( code == 9){
      if(event.preventDefault) {
          event.preventDefault();
      }
   }
}

function hKeys( event, q ){
   var direction = null;
   var code = (event.keyCode ? event.keyCode : (event.charCode ? event.charCode : -1 )); // Work around bug in event.which
   // handle cursor keys
   if (code == 38) {
      // slide up
      direction = 'prev';
   } else if (code == 40) {
      // slide down
      direction = 'next';
   } else if (code == 9) {
      if(event.preventDefault) {
          event.preventDefault();
      }
      $('#livesearch').val($('#searchtermslist li.current').attr('term'));
      q = $('#searchtermslist li.current').attr('term')
   } else if( code == 13 ){
      setQueryHashBeta( q );
      return;
   }
   if(direction != null){
      var par = $('#searchtermslist li.current');
      var fol = par.next();
      var item = fol.find('it');
      var next = $('#searchtermslist li.current')[direction]('li');
      if(next && next.length == 1 && !next.hasClass('noselect')){
         $('#searchtermslist li.current').removeClass('current');
         next.addClass('current');
         var tmp = $('#searchtermslist li.current').attr('term');
         if(tmp){
            $('#livesearch').val( tmp );
            setQueryHashBeta( tmp );
         }
      }
   } else {
      getSearchTerms( event, q );
      setTimeoutBETA();
   }
}

function setTimeoutBETA() {
   clearTimeout(searchTimeout);
   searchTimeout = setTimeout(function(){
         var q = $('#searchtermslist .current').attr('term');
         if(q && q.length > 2){
            setQueryHashBeta( q );
         }
      }, waitbeforesearch
   );
}

function setQueryHashBeta( q ){
   $.bbq.pushState({ q:encodeURI( q ) });
}

$(function() {
   $(window).bind( 'hashchange', function(e){
      var q = $.bbq.getState( "q" );
      if(q != undefined){
         doSearchB( q );
      }
   });
   $(window).trigger( 'hashchange' );
});

function getSearchTerms( event, q ) {
   showSearchNotification();
   if(q && lastSearchQuery != q && q.charAt(q.length - 1) != ':' && q.length > 0){
      var c = tCache[q]
      if(c){
         renderSearchTerms(c);
      }else{
         jQuery.ajax({
            type:'POST',
            timeout: 15000,
            data:'q='+q,
            url:'/search/liveterms',
            success:function(data,textStatus, xhr){
               tCache[q] = data;
               renderSearchTerms(data);
            },
            error:function(XMLHttpRequest,textStatus,errorThrown){}
         });
      }
      lastSearchQuery = q
      return
   }
   if(q.length == 0){
      $('#searchterms').hide();
   }
   lastSearchQuery = q
}

function renderSearchTerms( data ){
   if(data == ''){//Somehow data is passed as '' from SearchController after a while, cannot find the reason a this time .. simulating 'correct' arg
      data = new Object();
      data.terms = new Object();
      data.sugg  = new Object();
      data.q = '';
      data.fixed= '';
      data.repl = '';
   }

   var terms = data.terms;
   var sugg = data.sugg;
   var query = data.q;
   var fixed = data.fixed;
   var replace = data.repl;
   if(terms != null){
      if(terms.length > 0){
         //$('#searchquerytext').html(doHighlight( fixed+terms[0].term , fixed+replace, "<span style='color:transparent;'>", "</span>" ));
         $('#searchterms').html("<ul id='searchtermslist'></ul>");
         var style = "current"
         jQuery.each( terms, function( i, val){
               var count = "";
               if( !fixed && val.freq > 0 ){
                  count = "<span style='font-size:6pt; float:right;'><i> ~"+val.freq+" Erg.</i></span>"
               }
               $('#searchtermslist').append('<li class="'+style+'" term="'+fixed+val.term+'"><a href="/shop/index#q='+fixed+val.term+'" onClick=\'setQueryHashBeta("'+fixed+val.term+'");return false;\'><b><span class="fixed">'+fixed+'</span></b><span class="term">'+doHighlight( val.term , replace )+'</span>'+count+'</a></li>');
            style="";
         });
         $('#searchtermslist').append('<li class="klein" style="font-style:italic;font-size:8pt">* direkt vor oder/und nach Suchbegriff = Platzhalter</li>');
         $('#searchterms').show();
      }
   }
   if(sugg != null){
      if(sugg.length > 0){
         $('#searchtermslist').append('<li class="klein"><b>Meinten Sie vielleicht:</b></li>');
         jQuery.each( sugg, function( i, val){
               var count = "";
               if( !fixed && val.freq > 0 ){
                  count = "<span style='font-size:6pt; float:right;'><i> ~"+val.freq+" Erg.</i></span>"
               }
               $('#searchtermslist').append('<li class="'+style+' klein" term="'+val.term+'"><a href="/shop/index#q='+val.term+'" onClick=\'setQueryHashBeta("'+val.term+'");return false;\'><span class="term">'+val.term+'</span>'+count+'</a></li>');
            style="";
         });
         $('#searchterms').show();
         //setTimeoutBETA( fixed+terms[0].term+"" );
         //$('#searchquerytext').show();
      }
   }
   if(sugg != null && terms != null){
      if(sugg.length == 0 && terms.length == 0){
         $('#searchterms').hide();
      }
   }
}

function doSearchB( q ){
   //skip search for "a" etc
   if( q.length < 2 )return

   showSearchNotification();
   buildTabs( q );
   setNav( q );
   getErsatzteile( q );
   return
}

function setNav( q ){
   $('#navigationsList').html('<li><img src="/default/css/images/link_leer.gif" class="linkArrow" height="10" width="10"><a href="/shop" title="Zur&uuml;ck zur Shopseite" class="klein">Geschirrsp&uuml;ler K&uuml;hlschrank Herd Hausger&auml;te Shop</a></li>');
   $('#navigationsList').append('<li><img src="/default/css/images/link_leer.gif" class="stopArrow" height="10" width="10"><b>&thinsp;Suche nach '+decodeURI(q)+'</b></li>');
}

function buildTabs( q ){
   $('#main_column').html('<div id="searchresults"><h1>Suchergebnisse f&uuml;r <span class="hervorheben">'+decodeURI(q)+'</span></h1></div>');
   $('#searchresults').append('<div id="tabs" style="background:none;background-color: #F8F6F2;"></div>');
   $('#tabs').append('<ul id="tab-link"><li id="ersatzteile-list" class="ui-state-disabled"><a id="ersatzteile-link" href="#ersatzteile-tab"><img src="/images/spinner.gif"> <i>Suche Ersatzteile...</i></a></li><li id="geraete-list" class="ui-state-disabled"><a id="geraete-link" href="#geraete-tab"><img src="/images/spinner.gif"> <i>Suche Ger&auml;te...</i></a></li><li  id="bestell-list" class="ui-state-disabled"><a id="bestell-link" href="#bestell-tab"><img src="/images/spinner.gif"> <i>Suche Datenpool...</i></a></li></ul>');
   $('#tabs').append('<div id="ersatzteile-tab" style="background:none;background-color: #F8F6F2;"></div>');
   $('#tabs').append('<div id="geraete-tab" style="background:none;background-color: #F8F6F2;"></div>');
   $('#tabs').append('<div id="bestell-tab" style="background:none;background-color: #F8F6F2;"></div>');
   createTabs();
   $('#searchresults').append('<div id="tabs_bottom_scroll"></div>');
}

function setCache( data, q, sw ){
   var tmp = sCache[q];
   if(!tmp)
      tmp = {};
   switch(sw){
      case 1:
         tmp.a = data;
         break;
      case 2:
         tmp.g = data;
         break;
      case 3:
         tmp.b = data;
         break;
      case 4:
         tmp.s = data;
         break;
   }
   sCache[q] = tmp
}

function getErsatzteile( q ){
   var tmp = sCache[q];
   if(tmp && tmp.a){
      renderErsatzteile(tmp.a,q,false);
      getGeraete(q);
   }else{
      lastSearchReq = jQuery.ajax({
         type:'POST',
         data:'q='+q,
         url:'/search/searchersatzteile',
         success:function(data,textStatus, xhr){
            setCache(data, q, 1);
            if(xhr == lastSearchReq){
               renderErsatzteile( data, q, false );
               getGeraete( q );
            }
         },
         error:function(XMLHttpRequest,textStatus,errorThrown){}
      });
   }
}

function getGeraete( q ){
   var tmp = sCache[q];
   if(tmp && tmp.g){
      renderGeraete(tmp.g,q,false);
      getDatenpool(q);
   }else{
      lastSearchReq = jQuery.ajax({
         type:'POST',
         data:'q='+q,
         url:'/search/searchgeraete',
         success:function(data,textStatus, xhr){
            setCache(data, q, 2);
            if(xhr == lastSearchReq){
               renderGeraete( data, q );
               getDatenpool( q );
            }
         },
         error:function(XMLHttpRequest,textStatus,errorThrown){}
      });
   }
}

function getDatenpool( q ){
   var tmp = sCache[q];
   if(tmp && tmp.b){
      renderDatenpool(tmp.b,q,false);
      saveSearch(q);
   }else{
      lastSearchReq = jQuery.ajax({
         type:'POST',
         data:'q='+q,
         url:'/search/searchbestellware',
         success:function(data,textStatus, xhr){
            setCache(data, q, 3);
            if(xhr == lastSearchReq){
               renderDatenpool( data, q, false );
               saveSearch( q );
            }
         },
         error:function(XMLHttpRequest,textStatus,errorThrown){}
      });
   }
}

function saveSearch( q ){
   var tmp = sCache[q];
   if(tmp && tmp.s){
      hideAndFreeSearchNotification();
   }else{
      var c = 0;
      if($('#tab-link').attr('ec'))
         c = c + parseInt($('#tab-link').attr('ec'));
      if($('#tab-link').attr('gc'))
         c = c + parseInt($('#tab-link').attr('gc'));
      if($('#tab-link').attr('ac'))
         c = c + parseInt($('#tab-link').attr('ac'));
      if($('#tab-link').attr('bc'))
         c = c + parseInt($('#tab-link').attr('bc'));
      lastSearchReq = jQuery.ajax({
         type:'POST',
         data:'q='+q+'&c='+c,
         url:'/search/saveSearch',
         success:function(data,textStatus, xhr){
            setCache(data, q, 4);
            if(xhr == lastSearchReq){
               hideAndFreeSearchNotification();
            }
         },
         error:function(XMLHttpRequest,textStatus,errorThrown){}
      });
   }
}

function updateTabs(){
   var s = true;
   if($('#tab-link').attr('ec') > 0){
      $('#tabs').tabs('enable',0);
      if(s){
         $('#tabs').tabs('select',0);
         s = false;
      }
   }
   if($('#tab-link').attr('gc') > 0){
      $('#tabs').tabs('enable',1);
      if(s){
         $('#tabs').tabs('select',1);
         s = false;
      }
   }
   if($('#tab-link').attr('bc') > 0){
      $('#tabs').tabs('enable',2);
      if(s){
         $('#tabs').tabs('select',2);
         s = false;
      }
   }
}

function renderDatenpool( data, q, append ){
   if(!append){
      if(data == undefined || data.length == 0)
      data=new Object();//avoid exception in jquery "'length' ist Null oder kein Objekt"
      if(data.c == undefined){
         data.c = 0;
         data.o = 0;
         data.more = false;
         data.art = [];
      }
      $('#bestell-link').html("Datenpool ("+data.c+")");
      $('#bestell-link').attr('c', data.c);
      $('#tab-link').attr('bc', data.c);
      count2 = data.c;
      updateTabs();
      $('#bestell-tab').append("<div id='bestell-items' class='produkt-list'></div>");
   }
   jQuery.each( data.art, function(i, val){
      $('#bestell-items').append(doHighlight(createClosedListSchattenArtikel( val, 'bestell' ), q, "<b>", "</b>"));
   });
   if(data.more != true){
      $('#bestell-tab').removeAttr('q');
      $('#bestell-tab').removeAttr('o');
      $('#bestell-tab').removeAttr('l');
   }else{
      $('#bestell-tab').attr('q', q);
      $('#bestell-tab').attr('o', data.o+25);
   }
}

function renderGeraetHTML( data, counter ){
   var that = this;
   var id = '#'+$('#tabs').children().eq(2).attr('id'); // ID is changed on adding and removing tab, so go fill the second div
   jQuery.each( data.art, function(key, list){
      $(id).append("<div class='box_rahmen' id='"+key.replace(/ /g,"_")+"_box'><div class='box_titel maximinimize hidden' id='"+key.replace(/ /g,"_")+"_titel' title='Klicken zum zu / aufklappen'><a href='' class=''><img src='/default/css/images/link_leer.gif' class='maximiniClose' height='10' width='10'></a>&nbsp;"+key+"&nbsp;("+list.length+")</div><div class='box_detail null' style='display:none;' id='"+key.replace(/ /g,"_")+"'><table id='"+counter+"_geraete_table' align='center' cellspacing='0' cellpadding='3' class='fixedwidthtable'><tr><td class='klein_dunkel' width='55%' valign='top'><b>Ger&auml;te-/Modellbezeichnung</b></td><td class='klein_dunkel' width='20%' valign='top'><b>E-, Service-, Produktions- oder Hauptnummer</b></td><td class='klein_dunkel' width='20%' valign='top'><b>Zusatz-, F- oder Seriennummer oder Fertigungsdatum</b></td><td class='klein_dunkel' width='5%' valign='top'></td></table></div>");
      var lastModel = "";
      jQuery.each( list, function( i, val){
         var cl = "klein";
         if(i%2 != 0){
            cl = "klein_dunkel";
         }
         var bez = val.bez;
         if(lastModel == val.bez){
            bez = "&quot;";
         }
         lastModel = val.bez;
         $('#'+counter+'_geraete_table').append("<tr><td class='"+cl+"'>"+bez+"</td><td class='"+cl+"'><a href='/geraet/show?id="+encodeURIComponent(val.id)+"' class='klein'>"+val.nr+"</a></td><td class='"+cl+"'>"+val.t+"</td><td class='"+cl+"'><img class='tooltipbubbletopalign' alt='"+val.tooltip+"' src='/images/magnifier.png'></td>");
      });
      delete data.art[key];
      counter = counter + 1;
      setTimeout(function(){that.renderGeraetHTML(data, counter);}, 50);
      return false;
   });
}

function renderGeraete( data, q ){
   if(data == undefined || data.length == 0)
   data=new Object();//avoid exception in jquery "'length' ist Null oder kein Objekt"
   if(data.c == undefined){
      data.c = 0;
      data.o = 0;
      data.more = false;
      data.art = [];
   }
   $('#geraete-link').html("Ger&auml;te ("+data.c+")");
   $('#geraete-link').attr('c', data.c);
   $('#tab-link').attr('gc', data.c);
   var that = this;
   setTimeout(function(){that.renderGeraetHTML(data, 0);}, 1);
   if(jQuery.isEmptyObject(data.art) && data.c > 0){
      $('#geraete-link').attr('href', '/search/loadGeraete/'+q );
      $('#tabs').tabs('remove', 1);
      $('#tabs').tabs('add', '/search/loadGeraete/'+q, 'Ger&auml;te ('+data.c+')', 1);
      $('#tabs').tabs({
         ajaxOptions: {
            success: function(data){
               setTimeout(function(){that.renderGeraetHTML(data, 0);}, 1);
               var id = '#'+$('#tabs').children().eq(2).attr('id');
               $(id).html(doHighlight($(id).html(), q));
            }
         }
      });
   }else{
      var id = '#'+$('#tabs').children().eq(2).attr('id');
      $('#geraete-tab').html(doHighlight($(id).html(), q));
   }
   updateTabs();
}

function renderErsatzteile( data, q, append ){
   if(!append){
      if(data == undefined || data.length == 0)
      data=new Object();//avoid exception in jquery "'length' ist Null oder kein Objekt"
      if(data.c == undefined){
         data.c = 0;
         data.o = 0;
         data.more = false;
         data.art = [];
         data.featured = [];
      }
      $('#ersatzteile-link').html("Ersatzteile ("+data.c+")");
      $('#ersatzteile-link').attr('c', data.c);
      $('#tab-link').attr('ec', data.c);
      count0 = data.c;
      updateTabs();
      $('#ersatzteile-tab').append("<div id='ersatzteile-items' class='produkt-list'></div>");
   }
   jQuery.each( data.featured, function(i, val){
      // Do not render if item already displayed FIXME
      $('#ersatzteile-items').append(doHighlight(createClosedListArtikel( val, 'ersatz' ), q, "<b>", "</b>"));
   });
   jQuery.each( data.art, function(i, val){
      // Do not render if item already displayed FIXME
      $('#ersatzteile-items').append(doHighlight(createClosedListArtikel( val, 'ersatz' ), q, "<b>", "</b>"));
   });
   if(data.more != true){
      $('#ersatzteile-tab').removeAttr('q');
      $('#ersatzteile-tab').removeAttr('o');
      $('#ersatzteile-tab').removeAttr('l');
   }else{
      $('#ersatzteile-tab').attr('q', q);
      $('#ersatzteile-tab').attr('o', data.o+25);
   }
}

function loadMoreErsatzteile( q, offset ){

   if(q){
      jQuery.ajax({
         type:'POST',
         data:{'l':'25','o':offset, 'q':q, 'c':count0},
         dataType: 'json',
         url:'/search/searchersatzteile',
         success:function(data,textStatus){ renderErsatzteile(data, q, true); positionFooter();},
         error:function(XMLHttpRequest,textStatus,errorThrown){},
         complete:function(xhr, textStatus){ free_scroll_load = true; }
      });
   }else{
      free_scroll_load = true;
   }
   return false;
}

function loadMoreDatenpool( q, offset ){
   if(q){
      jQuery.ajax({
         type:'POST',
         data:{'l':'25','o':offset, 'q':q, 'c':count2},
         timeout: 4000,
         dataType: 'json',
         url:'/search/searchbestellware',
         success:function(data,textStatus){ renderDatenpool(data, q, true); positionFooter();},
         error:function(XMLHttpRequest,textStatus,errorThrown){},
         complete:function(xhr, textStatus){ free_scroll_load = true; }
      });
   }else{
      free_scroll_load = true;
   }
   return false;
}

function createClosedListArtikel( art , parent){
   var vertreiber = "&nbsp;"
   if(art.vert)
      vertreiber = art.vert
   var res = "<div class='produktListItem dunkel' id='"+art.id+"_"+parent+"_item'><div class='itemheader'><div class='titelitem artikelnr'><a href='/produkt/show/"+art.id+"' title='Zum Artikel'>"+art.nr+"</a>&thinsp;<span style='color:#736F6E'>"+vertreiber+"</span></div><div class='titelitem artikelbeschreibung'>"+replaceURLWithHTMLLinks(art.t)+"</div><div class='separator'></div><div class='titelitem_right'><a href='#' title='Details' id='"+art.id+"_"+parent+"_button' artikel='"+art.id+"' class='artikel'>Details</a></div></div>";
   res += "<div id='"+art.id+"_"+parent+"_detail' class='detailledItem hidden' style='display:none;'><div class='detailledItem_inner'><p class='center'><img src='/images/spinner.gif'></p></div></div><div class='separator'></div>";
   return res;
}

function createClosedListSchattenArtikel( art , parent){
   var vertreiber = "&nbsp;"
   if(art.v)
      vertreiber = art.v
   var res = "<div class='produktListItem dunkel' id='"+art.id+"_"+parent+"_item'><div class='itemheader'><div class='titelitem artikelnr'><a href='/schatten/show/"+art.id+"' title='Zum Artikel'>"+art.nr+"</a>&thinsp;<span style='color:#736F6E'>"+vertreiber+"</span></div><div class='titelitem artikelbeschreibung'>"+replaceURLWithHTMLLinks(art.t)+"</div><div class='separator'></div><div class='titelitem_right'><a href='#' title='Details' id='"+art.id+"_"+parent+"_button' artikel='"+art.id+"' class='schatten_artikel'>Details</a></div></div>";
   res += "<div id='"+art.id+"_"+parent+"_detail' class='detailledItem hidden' style='display:none;'><div class='detailledItem_inner'><p class='center'><img src='/images/spinner.gif'></p></div></div><div class='separator'></div>";
   return res;
}

$('.schatten_artikel').live('click', function(){
   var id = $(this).attr('artikel');
   var divToLoad = $(this).parent().parent().next()
   var loadAlt = divToLoad.hasClass('loaded');
   var urlToLoad = "/schatten/loadinner/"+id;
   if(!divToLoad.is(':visible')) {
      divToLoad.show();
      if(!loadAlt) {
         jQuery.ajax({
            type:'POST',
            url:urlToLoad,
            success:function(data,textStatus){divToLoad.html(data); divToLoad.addClass('loaded'); positionFooter();},
            error:function(XMLHttpRequest,textStatus,errorThrown){}}
         );
      }
   } else {
      divToLoad.hide();
   }
   positionFooter();
   return false;
});

$('.artikel').live('click', function(){
   var id = $(this).attr('artikel');
   var divToLoad = $(this).parent().parent().next()
   var loadAlt = divToLoad.hasClass('loaded');
   var urlToLoad = "/produkt/loadinner/"+id;
   if(!divToLoad.is(':visible')) {
      divToLoad.show();
      if(!loadAlt) {
         jQuery.ajax({
            type:'POST',
            url:urlToLoad,
            success:function(data,textStatus){divToLoad.html(data); divToLoad.addClass('loaded'); positionFooter();},
            error:function(XMLHttpRequest,textStatus,errorThrown){}}
         );
      }
   } else {
      divToLoad.hide();
   }
   positionFooter();
   return false;
});

var free_scroll_load = true;


$(document).ready(function()
{
   $(window).scroll(function(){
      var tabs_bottom =$('#tabs').height() + 100; // Height of the header
      if(tabs_bottom < $(window).scrollTop() + $(window).height()){
         var tab = $('#tabs').tabs('option', 'selected');
         if(free_scroll_load){
            free_scroll_load = false;
            switch(tab){
               case 0:
                  loadMoreErsatzteile( $('#ersatzteile-tab').attr('q'), $('#ersatzteile-tab').attr('o') );
                  break;
               case 2:
                  loadMoreDatenpool($('#bestell-tab').attr('q'), $('#bestell-tab').attr('o'));
                  break;
            }
         }
      }
   });
});
/*
 * Search - end
 */
function validateBank( event, blz ){
   showSearchNotification();
   jQuery.ajax({
      type:'POST',
      data:'blz='+blz,
      url:'/webShopUser/validateBank',
      success:function(data,textStatus){hideAndFreeSearchNotification();flashShowAndHide();positionFooter();},
      error:function(XMLHttpRequest,textStatus,errorThrown){}
   });
}

function createTabs(){
   $('#tabs').tabs({
      show: function(event, ui) {
         positionFooter();
      },
      tabTemplate: '<li><a href="#{href}"><span>#{label}</span></a></li>',
      cache: true,
      spinner:'<img src="/images/spinner.gif">&nbsp;<i>Lade...</i>',
      load: function(event, ui) {
         positionFooter();
      }
   });
   positionFooter();
   replaceErsatz();
}

function replaceErsatz(){
   if ($('#ersatzteile-tab').length>0) {
      $('#ersatzteile-tab').html(replaceURLWithHTMLLinks($('#ersatzteile-tab').html()));
   }
   if ($('#artikelnummer-tab').length>0) {
      $('#artikelnummer-tab').html(replaceURLWithHTMLLinks($('#artikelnummer-tab').html()));
   }
}

function replaceURLWithHTMLLinks(text) {
  var exp = /\b(ERSATZ)\s?=\s?([0-9]*)/ig;
  return text.replace(exp,"(Ersetzt durch <a href='/shop/index#q=$2'>$2</a>)");
}

function showSearchNotification() {
   searchRequest = true;
   //$("#onSearchRequest").show();
}

function hideAndFreeSearchNotification() {
   searchRequest = false;
   //$("#onSearchRequest").fadeOut('fast');
}

function doHighlightTerms(){
   if($('#searchtermslist').html() == null){
      $('#searchterms').hide();
      return false;
   }
   if($('#searchquerytext').text() == null){
      $('#searchterms').hide();
      return false;
   }
   $('#searchtermslist').html(doHighlight($('#searchtermslist').html(), $('#searchquerytext').text()));
   $('#searchterms').show();
   return false;
}

function doHighlightTermsAndReplace(){
   $('#searchtermslist').html(doHighlight($('#searchtermslist').html(), $('#searchquerytext').text()));
   $('#searchterms').show();
   $('#livesearch').val($('#searchquerytext').text());
}

function doHighlight(bodyText, searchTerm, highlightStartTag, highlightEndTag) {
   if ((!highlightStartTag) || (!highlightEndTag)) {
      highlightStartTag = "<b>";
      highlightEndTag = "</b>";
   }
   if(!searchTerm){
      return bodyText
   }
   var newText = "";
   var i = -1;
   var lcSearchTerm = searchTerm.toLowerCase();
   var lcBodyText = bodyText.toLowerCase();
   while (bodyText.length > 0) {
      i = lcBodyText.indexOf(lcSearchTerm, i+1);
      if (i < 0) {
         newText += bodyText;
         bodyText = "";
      } else {
         if (bodyText.lastIndexOf(">", i) >= bodyText.lastIndexOf("<", i)) {
            if (lcBodyText.lastIndexOf("/script>", i) >= lcBodyText.lastIndexOf("<script", i)) {
               newText += bodyText.substring(0, i) + highlightStartTag + bodyText.substr(i, searchTerm.length) + highlightEndTag;
               bodyText = bodyText.substr(i + searchTerm.length);
               lcBodyText = bodyText.toLowerCase();
               i = -1;
            }
         }
      }
   }
   return newText;
}

function hauptmenu_open() {
   hauptmenu_canceltimer();
   hauptmenu_close();
   menuitem = $(this).find('div').css('visibility', 'visible');
}

function hauptmenu_close() {
   if(menuitem){
      menuitem.css('visibility', 'hidden');
   }
}

function hauptmenu_timer() {
   closetimer = window.setTimeout(hauptmenu_close, menuclosetimeout);
}

function hauptmenu_canceltimer() {
   if(closetimer){
      window.clearTimeout(closetimer);
      closetimer = null;
   }
}

$(document).ready(function() {
   $('#hauptmenu > ul > li').bind('mouseover', hauptmenu_open)
   $('#hauptmenu > ul > li').bind('mouseout',  hauptmenu_timer)
});

$(document).ready(function() {
   $('input[title]').each(function() {
      if($(this).val() === '') {
         $(this).val($(this).attr('title'));
      }
      $(this).focus(function() {
         if($(this).val() === $(this).attr('title')) {
            $(this).val('').addClass('focused');
         }
      });
      $(this).blur(function() {
         if($(this).val() === '') {
            $(this).val($(this).attr('title')).removeClass('focused');
         }
      });
   });
});



