$(document).ready(function() {

  $('#header').append('<p><a id="top" href="#bottom" title="zum Seitenende">nach unten</a></p>');
  $('#footer').append('<a id="bottom" href="#pageTop" title="zum Seitenanfang">nach oben</a>'); 

  // jquery scroll function by cody lindley (http://www.codylindley.com/)
  jQuery.getPos = function (e)
  {
  	var l = 0;
  	var t  = 0;
  	var w = jQuery.intval(jQuery.css(e,'width'));
  	var h = jQuery.intval(jQuery.css(e,'height'));
  	var wb = e.offsetWidth;
  	var hb = e.offsetHeight;
  	while (e.offsetParent){
  		l += e.offsetLeft + (e.currentStyle?jQuery.intval(e.currentStyle.borderLeftWidth):0);
  		t += e.offsetTop  + (e.currentStyle?jQuery.intval(e.currentStyle.borderTopWidth):0);
  		e = e.offsetParent;
  	}
  	l += e.offsetLeft + (e.currentStyle?jQuery.intval(e.currentStyle.borderLeftWidth):0);
  	t  += e.offsetTop  + (e.currentStyle?jQuery.intval(e.currentStyle.borderTopWidth):0);
  	return {x:l, y:t, w:w, h:h, wb:wb, hb:hb};
  };
  jQuery.getClient = function(e)
  {
  	if (e) {
  		w = e.clientWidth;
  		h = e.clientHeight;
  	} else {
  		w = (window.innerWidth) ? window.innerWidth : (document.documentElement && document.documentElement.clientWidth) ? document.documentElement.clientWidth : document.body.offsetWidth;
  		h = (window.innerHeight) ? window.innerHeight : (document.documentElement && document.documentElement.clientHeight) ? document.documentElement.clientHeight : document.body.offsetHeight;
  	}
  	return {w:w,h:h};
  };
  jQuery.getScroll = function (e) 
  {
  	if (e) {
  		t = e.scrollTop;
  		l = e.scrollLeft;
  		w = e.scrollWidth;
  		h = e.scrollHeight;
  	} else  {
  		if (document.documentElement && document.documentElement.scrollTop) {
  			t = document.documentElement.scrollTop;
  			l = document.documentElement.scrollLeft;
  			w = document.documentElement.scrollWidth;
  			h = document.documentElement.scrollHeight;
  		} else if (document.body) {
  			t = document.body.scrollTop;
  			l = document.body.scrollLeft;
  			w = document.body.scrollWidth;
  			h = document.body.scrollHeight;
  		}
  	}
  	return { t: t, l: l, w: w, h: h };
  };
  
  jQuery.intval = function (v)
  {
  	v = parseInt(v);
  	return isNaN(v) ? 0 : v;
  };
  
  jQuery.fn.ScrollTo = function(s) {
  	o = jQuery.speed(s);
  	return this.each(function(){
  		new jQuery.fx.ScrollTo(this, o);
  	});
  };
  
  jQuery.fx.ScrollTo = function (e, o)
  {
  	var z = this;
  	z.o = o;
  	z.e = e;
  	z.p = jQuery.getPos(e);
  	z.s = jQuery.getScroll();
  	z.clear = function(){clearInterval(z.timer);z.timer=null};
  	z.t=(new Date).getTime();
  	z.step = function(){
  		var t = (new Date).getTime();
  		var p = (t - z.t) / z.o.duration;
  		if (t >= z.o.duration+z.t) {
  			z.clear();
  			setTimeout(function(){z.scroll(z.p.y, z.p.x)},13);
  		} else {
  			st = ((-Math.cos(p*Math.PI)/2) + 0.5) * (z.p.y-z.s.t) + z.s.t;
  			sl = ((-Math.cos(p*Math.PI)/2) + 0.5) * (z.p.x-z.s.l) + z.s.l;
  			z.scroll(st, sl);
  		}
  	};
  	z.scroll = function (t, l){window.scrollTo(l, t)};
  	z.timer=setInterval(function(){z.step();},13);
  };

  // scroll bottom to top - slow ;)
  $('a#bottom').click(function(){$('#pageTop').ScrollTo(700);return false});
  // scroll top to bottom - slow ;)
  $('a#top').click(function(){$('#bottom').ScrollTo(700);return false});



  // toggle vissibility of "box_last_viewed" and "box_cart"

  // toggles box_last_viewed 
  $('#box_last_viewed').hide();
  $('a#toogle_last_watched').click(function() {
    $('#box_last_viewed').slideToggle();
    return false;
  });

  $('#box_last_viewed').appendTo('#options');
  
  $("a#toogle_last_watched").css({ display: "block"});  
  $("a#toogle_last_watched").insertAfter("#top");
  
  $('#box_last_viewed').append("<p><a href='#' class='close'>schlie&szlig;en</a></p>");
  $('#box_last_viewed a.close').click(function() {
    $('#box_last_viewed').slideToggle();
    return false;
  }); 


  // toggles box_cart  
  $('#box_cart').hide();
  $('a#toggle_cart').click(function() {
    $('#box_cart').slideToggle();
    return false;
  });

  $('a#toggle_cart').insertAfter("#top").css({ display: "block"});
  $('#box_cart').appendTo('#options');

  // add total price to toogle cart link
  $('.total').clone().appendTo('a#toggle_cart')
  
  $('#box_cart').append("<p><a href='#' class='close'>schlie&szlig;en</a></p>");
  $('#box_cart a.close').click(function() {
    $('#box_cart').slideToggle();
    return false;
  });

  $("a.box_cart").insertAfter("#toogle_last_watched"); 
  
  $('div#hide').remove();

  /*
  // show/hide categories (left column)
  $('#product_options').hide();
  $('a#toggle_cat').click(function() {
    //$('#product_options').BlindRight(500);
    $('#categories').BlindToggleHorizontally(500);
    return false;
  });
  */ 
  
  // jquery imagebox for big product images
  $.ImageBox.init(
    {
      loaderSRC: 'templates/xtc-gl/img/imagebox/loading.gif',
      closeHTML: '<img src="templates/xtc-gl/img/imagebox/close.gif" alt="schlie&szlig;en" title="Fenster schlie&szlig;en" />'
    }
  );

  // show manufacturers next to product name
  $('#all_products').insertAfter('.meta');
  
});
