jQuery.fn.extend({
	everyTime: function(interval, label, fn, times, belay) {
		return this.each(function() {
			jQuery.timer.add(this, interval, label, fn, times, belay);
		});
	},
	oneTime: function(interval, label, fn) {
		return this.each(function() {
			jQuery.timer.add(this, interval, label, fn, 1);
		});
	},
	stopTime: function(label, fn) {
		return this.each(function() {
			jQuery.timer.remove(this, label, fn);
		});
	}
});
jQuery.extend({
	timer: {
		guid: 1,
		global: {},
		regex: /^([0-9]+)\s*(.*s)?$/,
		powers: {
			// Yeah this is major overkill...
			'ms': 1,
			'cs': 10,
			'ds': 100,
			's': 1000,
			'das': 10000,
			'hs': 100000,
			'ks': 1000000
		},
		timeParse: function(value) {
			if (value == undefined || value == null)
				return null;
			var result = this.regex.exec(jQuery.trim(value.toString()));
			if (result[2]) {
				var num = parseInt(result[1], 10);
				var mult = this.powers[result[2]] || 1;
				return num * mult;
			} else {
				return value;
			}
		},
		add: function(element, interval, label, fn, times, belay) {
			var counter = 0;
			
			if (jQuery.isFunction(label)) {
				if (!times) 
					times = fn;
				fn = label;
				label = interval;
			}
			
			interval = jQuery.timer.timeParse(interval);

			if (typeof interval != 'number' || isNaN(interval) || interval <= 0)
				return;

			if (times && times.constructor != Number) {
				belay = !!times;
				times = 0;
			}
			
			times = times || 0;
			belay = belay || false;
			
			if (!element.$timers) 
				element.$timers = {};
			
			if (!element.$timers[label])
				element.$timers[label] = {};
			
			fn.$timerID = fn.$timerID || this.guid++;
			
			var handler = function() {
				if (belay && this.inProgress) 
					return;
				this.inProgress = true;
				if ((++counter > times && times !== 0) || fn.call(element, counter) === false)
					jQuery.timer.remove(element, label, fn);
				this.inProgress = false;
			};
			
			handler.$timerID = fn.$timerID;
			
			if (!element.$timers[label][fn.$timerID]) 
				element.$timers[label][fn.$timerID] = window.setInterval(handler,interval);
			
			if ( !this.global[label] )
				this.global[label] = [];
			this.global[label].push( element );
			
		},
		remove: function(element, label, fn) {
			var timers = element.$timers, ret;
			
			if ( timers ) {
				
				if (!label) {
					for ( label in timers )
						this.remove(element, label, fn);
				} else if ( timers[label] ) {
					if ( fn ) {
						if ( fn.$timerID ) {
							window.clearInterval(timers[label][fn.$timerID]);
							delete timers[label][fn.$timerID];
						}
					} else {
						for ( var fn in timers[label] ) {
							window.clearInterval(timers[label][fn]);
							delete timers[label][fn];
						}
					}
					
					for ( ret in timers[label] ) break;
					if ( !ret ) {
						ret = null;
						delete timers[label];
					}
				}
				
				for ( ret in timers ) break;
				if ( !ret ) 
					element.$timers = null;
			}
		}
	}
});
if (jQuery.browser.msie)
	jQuery(window).one("unload", function() {
		var global = jQuery.timer.global;
		for ( var label in global ) {
			var els = global[label], i = els.length;
			while ( --i )
				jQuery.timer.remove(els[i], label);
		}
	});
    
    
/*
 * cacheImage: a jQuery plugin
 *
 * cacheImage is a simple jQuery plugin for pre-caching images.  The
 * plugin can be used to eliminate flashes of unstyled content (FOUC) and
 * improve perceived page load time.  Callbacks for load, error and abort
 * events are provided.
 *
 * For usage and examples, visit:
 * http://github.com/alexrabarts/jquery-cacheimage
 *
 * Licensed under the MIT:
 * http://www.opensource.org/licenses/mit-license.php
 *
 * Copyright (c) 2008 Stateless Systems (http://statelesssystems.com)
 *
 * @author   Alex Rabarts (alexrabarts -at- gmail -dawt- com)
 * @requires jQuery v1.2 or later
 * @version  0.1
 */

 (function ($) {
   $.extend($, {
     cacheImage: function (src, options) {
       if (typeof src === 'object') {
         $.each(src, function () {
           $.cacheImage(String(this), options);
         });
       }

       var image = new Image();

       options = options || {};

       $.each(['load', 'error', 'abort'], function () { // Callbacks
         var e = String(this);
         if (typeof options[e] === 'function') { $(image)[e](options[e]); }
       });

       image.src = src;

       return image;
     }
   });

   $.extend($.fn, {
     cacheImage: function (options) {
       return this.each(function () {
         $.cacheImage(this.src, options);
       });
     }
   });
 })(jQuery);

/*
 * www.lc1.de - Initial-Scripting, DOM-Manipulation, Special-Cases
 * 
 * @author Oliver Neudeck oliver.neudeck@arsmedium.com
 * @author Michael Bayer michael.bayer@arsmedium.com
 * @requires jQuery v1.3.2
 * @version  1.0
 * 
 */

// IE-Erkennung
isIE = !jQuery.support.noCloneEvent;
isIE6 = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 6.0") != -1);

// Hintergrundgrafiken fuer Menu-Animation cachen
if(isIE && isIE6) {
	$.cacheImage('/fileadmin/img/dropdown1_ie.gif');
	$.cacheImage('/fileadmin/img/dropdown2_ie.gif');
	$.cacheImage('/fileadmin/img/dropdown3_ie.gif');	
} else {
	$.cacheImage('/fileadmin/img/dropdown1.png');
	$.cacheImage('/fileadmin/img/dropdown2.png');
	$.cacheImage('/fileadmin/img/dropdown3.png');
}
$.cacheImage('/fileadmin/img/product_overview_h2.png');

// DOM-Ready > Manipulation
$(function () {

    $("#navi > li").hover(
      function () {
            $(this).stopTime().find('a:eq(0)').addClass('active');
			(!isIE) ? $(this).find('ul:eq(0)').slideDown(270) : $(this).find('ul:eq(0)').show();
            return false;
      }, function () {
			$(this).find('a:eq(0)').removeClass('active');
			var thisElement = $(this);
			$(this).oneTime(300, function() {
				(!isIE) ? thisElement.find('ul:eq(0)').slideUp(270) : thisElement.find('ul:eq(0)').hide();
			});
			return false;
      }
    );

	$("a.printit").click(function() {
		self.print();
		return false;
	});

	if($('#product_overview').length != 0) {

		$("#product_overview ul li").hover(
		  function () {
				$('#product_overview li a').addClass('bright');
				$('a',this).removeClass('bright');
				$('h2',this).show();
				return false;
		  }, function () {
				$('h2',this).hide();
				return false;
		  }
		);

		$('#product_overview ul').mouseleave(function() {
			$('a',this).removeClass('bright');
		})
	}
	
	if($('#under_packshot').length != 0) {
		
		if(!isIE) $('#under_packshot li').css('opacity','.5');
		$('#under_packshot li').hover(function() {
			thisLi = $(this);
			if(!isIE) {
				thisLi.css('opacity','1');
			}
			thisLi.find('h2').show();
		},function(){
			thisLi = $(this);
			if(!isIE) {
				thisLi.css('opacity','.5');
			}
			thisLi.find('h2').hide();
		});
	}
	
	/*if($('#page.home #corner').length != 0) {
		var params = {};
		params.wmode = 'transparent';
		swfobject.embedSWF("fileadmin/swf/lc1_ecke.swf", "corner", "167", "140", "8.0.0", null, null, params , null);
	}*/

	if($('#SeriennummerInvisible').length != 0) {
		if($('#Betreff').attr('selectedIndex') == 3) {
			$('#SeriennummerInvisible').show();
		}
		$('#Betreff').change(function() {
			if($(this).attr("selectedIndex") == 3) {
				$('#SeriennummerInvisible').show();
			} else {
				$('#SeriennummerInvisible').hide();
			}
		})
	}

});