/* Copyright (c) WEBSALE AG 2010
 * Diese Software ist kommerziell und unterliegt der Lizenzpflicht.
 * Benutzung und Weitergabe nur mit Genehmigung und mit Lizenz der WEBSALE AG.
 *
 * Copyright (c) WEBSALE AG 2010
 * This software is to be licensed.
 * Use or distribution only with expressed permission and with license of WEBSALE AG.
 */

//////////////////////////////////////////////////////////////////////////////////////////
//                                                                                      //
//    Designspezifische Funktionen fuer WEBSALE eCommerce                               //
//                                                                                      //
//////////////////////////////////////////////////////////////////////////////////////////



//////////////////////////////////////////////////////////////////////////////////////////
//	Allgemeine: "verfügbare Zeichen einer Textarea anzeigen"                        //
//////////////////////////////////////////////////////////////////////////////////////////
//
//	Mit folgender Funktion können Sie die restlichen verfügbaren Zeichen
//	einer Textarea anzeigen lassen:
//	ws_registerLimitTextarea(textareaid, maxlength, infodiv, infostring_signsleft, infostring_nosignsleft)
//		textareaid:		Die ID der Textarea
//		maxlength:		Die maximale Anzahl an Zeichen
//		infodiv:		Die ID des DIV-Containers in der die verfügbare Menge an Zeichen angezeigt wird
//		infostring_signsleft:	Dieser Text wird angezeigt wenn noch Zeichen zur Verfügung stehen. Das Tag ~WSJS-Signs~ wird durch die verfügbare Anzahl an Zeichen ersetzt.
//		infostring_nosignsleft:	Dieser Text wird angezeigt wenn keine Zeichen mehr zur Verfügung stehen. Das Tag ~WSJS-Signs~ wird durch die maximale Anzahl an Zeichen ersetzt.
//
//	Rufen Sie diese Funktion entweder in der Funktion $(document).ready oder an einer beliebigen Stelle im Template auf



//////////////////////////////////////////////////////////////////////////////////////////
//    Allgemein: "DIV-Container bei aktiviertem Javascript einblenden"                  //
//////////////////////////////////////////////////////////////////////////////////////////

//Alle DIV-Container mit dieser Klasse werden nachdem die Seite gealden ist automatisch eingeblendet
//Die DIV-Container muessen dabei den style "display: none" besitzen
var ws_JSOnlyClass = 'jsonly';



//////////////////////////////////////////////////////////////////////////////////////////
//    Modul: "Produktvergleich"                                                         //
//////////////////////////////////////////////////////////////////////////////////////////
//Anhand der nachfolgenden Parameter laesst sich das Verhalten des Produktvergleichs konfigurieren

//Der DIV-Container in dem der Inhalt des Layers (Produktvergleich) angezeigt wird (Kategorie/Produkt)
var ws_PRCAjaxDivContent = 'PC-Content';

//Der Klassenname der Links zum Anzeigen des Produktvergleichs 
//dieser DIV-Container muss einmal auf jedem Template vorhanden sein auf dem der Produktvergleich angezeigt wird.
var ws_PRCShowProductCompareClass = 'PRC-Show';

//Der DIV-Container mit dieser ID wird eingeblendet wenn eine Hinweismeldungen angezeigt wird, z.B. wenn keine weiteren Produkte zum Produktvergleich hinzugefuegt werden koennen (Kategorie)
var ws_PRCAlertDiv = 'PC-Alert';
//In den DIV-Container mit dieser ID wird der Hinweistext eingefuegt (Kategorie)
var ws_PRCAlertTextDiv = 'PC-Alert-Message';

//Ist dieser Schalter auf true gesetzt wird der Inhalt des Produktvergleichs per JavaScript um 90 Grad gedreht
var ws_PRCRotate = true;
//Anfang und Endekennungen der Daten- und Template-Sektion im Template welches per AJAX zurueckgegeben wird
var ws_PRCRotateDataBegin = '<data>';
var ws_PRCRotateDataEnd = '</data>';
var ws_PRCRotateTemplateBegin = '<template>';
var ws_PRCRotateTemplateEnd = '</template>';
//Feld- und Datensatztrenner der Datensektion
var ws_PRCRotateDataFieldSeparator = '<df>';
var ws_PRCRotateDataRowSeparator = '<dr>';
//Konfiguration der Ausgabetabelle
var ws_PRCRotateTableClass = 'PRC-Table';
var ws_PRCRotateTableID = 'PRC-Table';
var ws_PRCRotateTableTRClasses = [ 'PRC-TR1', 'PRC-TR2' ];                         //Array mit beliebiger Anzahl an Klassen
var ws_PRCRotateTableTDHeaderClasses = [ 'PRC-TDHeader1', 'PRC-TDHeader2' ];       //Array mit beliebiger Anzahl an Klassen
var ws_PRCRotateTableTDClasses = [ 'PRC-TD1', 'PRC-TD2' ];                         //Array mit beliebiger Anzahl an Klassen
var ws_PRCRotateTableTDClassesAlternateVertical = true;
var ws_PRCRotateTemplateReplaceTag = '#####REPLACE#####';



//////////////////////////////////////////////////////////////////////////////////////////
//    Modul: "Produkte per AJAX in den Warenkorb legen"                                 //
//////////////////////////////////////////////////////////////////////////////////////////

//Diese Funktion wird aufgerufen bevor die AJAX-Anfrage abgesetzt wird.
//Mit dieser Funktion ist zum Beispiel eine Ladeanzeige realisierbar
function ws_AJAXaddToBasketStart()
{

}


//Diese Funktion wird aufgerufen wenn Produkt(e) in den Warenkorb gelegt werden konnten
//Mit dieser Funktion ist die Erfolgsmeldung realisierbar
function ws_AJAXaddToBasketResponseSuccess()
{

}

//Diese Funktino wird aufgerufen wenn mindestens ein Artikel nicht in den Warenkorb gelegt werden konnte
//Mit dieser Funktion laesst sich die von WEBSALE eCommerce erzeugte Fehlermeldung ausgeben
function ws_AJAXaddToBasketResponseError()
{

}

//Diese Funktion wird aufgerufen wenn die AJAX-Kommunikatino fehlschlug
//Mit dieser Funktion laesst sich ein allgemeiner Kommunikationsfehler (z.B. wenn die Internetverbindung unterbrochen wurde) anzeigen
function ws_AJAXaddToBasketError()
{

}

//////////////////////////////////////////////////////////////////////////////////////////
//    Modul: "abhängige Varianten per AJAX nachladen"                                   //
//////////////////////////////////////////////////////////////////////////////////////////

//Diese Funktion wird aufgerufen bevor die AJAX-Anfrage abgesetzt wird.
//Mit dieser Funktion ist zum Beispiel eine Ladeanzeige realisierbar
function ws_AJAXPRStart()
{

}


//Diese Funktion wird aufgerufen wenn eine abhängige Variantenkombination erfolgreich geladen werden konnte
//Mit dieser Funktion ist die Erfolgsmeldung realisierbar
function ws_AJAXPRResponseSuccess()
{

}

//Diese Funktion wird aufgerufen wenn eine abhängige Variantenkombination NICHT geladen werden konnte
//Mit dieser Funktion laesst sich die von WEBSALE eCommerce erzeugte Fehlermeldung ausgeben
function ws_AJAXPRResponseError()
{

}

//Diese Funktion wird aufgerufen wenn die AJAX-Kommunikatino fehlschlug
//Mit dieser Funktion laesst sich ein allgemeiner Kommunikationsfehler (z.B. wenn die Internetverbindung unterbrochen wurde) anzeigen
function ws_AJAXPRError()
{

}



//////////////////////////////////////////////////////////////////////////////////////////
//    Easy Slider 1.7 - jQuery plugin"                       				            //
//////////////////////////////////////////////////////////////////////////////////////////
/*
 * 	
 *	written by Alen Grakalic	
 *	http://cssglobe.com/post/4004/easy-slider-15-the-easiest-jquery-plugin-for-sliding
 *
 *	Copyright (c) 2009 Alen Grakalic (http://cssglobe.com)
 *	Dual licensed under the MIT (MIT-LICENSE.txt)
 *	and GPL (GPL-LICENSE.txt) licenses.
 *
 *	Built for jQuery library
 *	http://jquery.com
 *
 */

(function($) {

	$.fn.easySlider = function(options){
	  
		// default configuration properties
		var defaults = {			
			prevId: 		'prevBtn',
			prevText: 		'Previous',
			nextId: 		'nextBtn',	
			nextText: 		'Next',
			controlsShow:	true,
			controlsBefore:	'',
			controlsAfter:	'',	
			controlsFade:	true,
			firstId: 		'firstBtn',
			firstText: 		'First',
			firstShow:		false,
			lastId: 		'lastBtn',	
			lastText: 		'Last',
			lastShow:		false,				
			vertical:		false,
			speed: 			2000,
			auto:			false,
			pause:			4000,
			continuous:		false, 
			numeric: 		false,
			numericId: 		'controls'
		}; 
		
		var options = $.extend(defaults, options);  
				
		this.each(function() {  
			var obj = $(this); 				
			var s = $("li", obj).length;
			var w = $("li", obj).width(); 
			var h = $("li", obj).height(); 
			var clickable = true;
			obj.width(w); 
			obj.height(h); 
			obj.css("overflow","hidden");
			var ts = s-1;
			var t = 0;
			$("ul", obj).css('width',s*w);			
			
			if(options.continuous){
				$("ul", obj).prepend($("ul li:last-child", obj).clone().css("margin-left","-"+ w +"px"));
				$("ul", obj).append($("ul li:nth-child(2)", obj).clone());
				$("ul", obj).css('width',(s+1)*w);
			};				
			
			if(!options.vertical) $("li", obj).css('float','left');
								
			if(options.controlsShow){
				var html = options.controlsBefore;				
				if(options.numeric){
					html += '<ol id="'+ options.numericId +'"></ol>';
				} else {
					if(options.firstShow) html += '<span id="'+ options.firstId +'"><a href=\"javascript:void(0);\">'+ options.firstText +'</a></span>';
					html += ' <span id="'+ options.prevId +'"><a href=\"javascript:void(0);\">'+ options.prevText +'</a></span>';
					html += ' <span id="'+ options.nextId +'"><a href=\"javascript:void(0);\">'+ options.nextText +'</a></span>';
					if(options.lastShow) html += ' <span id="'+ options.lastId +'"><a href=\"javascript:void(0);\">'+ options.lastText +'</a></span>';				
				};
				
				html += options.controlsAfter;						
				$(obj).after(html);										
			};
			
			if(options.numeric){									
				for(var i=0;i<s;i++){						
					$(document.createElement("li"))
						.attr('id',options.numericId + (i+1))
						.html('<a rel='+ i +' href=\"javascript:void(0);\">'+ (i+1) +'</a>')
						.appendTo($("#"+ options.numericId))
						.click(function(){							
							animate($("a",$(this)).attr('rel'),true);
						}); 												
				};							
			} else {
				$("a","#"+options.nextId).click(function(){		
					animate("next",true);
				});
				$("a","#"+options.prevId).click(function(){		
					animate("prev",true);				
				});	
				$("a","#"+options.firstId).click(function(){		
					animate("first",true);
				});				
				$("a","#"+options.lastId).click(function(){		
					animate("last",true);				
				});				
			};
			
			function setCurrent(i){
				i = parseInt(i)+1;
				$("li", "#" + options.numericId).removeClass("current");
				$("li#" + options.numericId + i).addClass("current");
			};
			
			function adjust(){
				if(t>ts) t=0;		
				if(t<0) t=ts;	
				if(!options.vertical) {
					$("ul",obj).css("margin-left",(t*w*-1));
				} else {
					$("ul",obj).css("margin-left",(t*h*-1));
				}
				clickable = true;
				if(options.numeric) setCurrent(t);
			};
			
			function animate(dir,clicked){
				if (clickable){
					clickable = false;
					var ot = t;				
					switch(dir){
						case "next":
							t = (ot>=ts) ? (options.continuous ? t+1 : ts) : t+1;						
							break; 
						case "prev":
							t = (t<=0) ? (options.continuous ? t-1 : 0) : t-1;
							break; 
						case "first":
							t = 0;
							break; 
						case "last":
							t = ts;
							break; 
						default:
							t = dir;
							break; 
					};	
					var diff = Math.abs(ot-t);
					var speed = diff*options.speed;						
					if(!options.vertical) {
						p = (t*w*-1);
						$("ul",obj).animate(
							{ marginLeft: p }, 
							{ queue:false, duration:speed, complete:adjust }
						);				
					} else {
						p = (t*h*-1);
						$("ul",obj).animate(
							{ marginTop: p }, 
							{ queue:false, duration:speed, complete:adjust }
						);					
					};
					
					if(!options.continuous && options.controlsFade){					
						if(t==ts){
							$("a","#"+options.nextId).hide();
							$("a","#"+options.lastId).hide();
						} else {
							$("a","#"+options.nextId).show();
							$("a","#"+options.lastId).show();					
						};
						if(t==0){
							$("a","#"+options.prevId).hide();
							$("a","#"+options.firstId).hide();
						} else {
							$("a","#"+options.prevId).show();
							$("a","#"+options.firstId).show();
						};					
					};				
					
					if(clicked) clearTimeout(timeout);
					if(options.auto && dir=="next" && !clicked){;
						timeout = setTimeout(function(){
							animate("next",false);
						},diff*options.speed+options.pause);
					};
			
				};
				
			};
			// init
			var timeout;
			if(options.auto){;
				timeout = setTimeout(function(){
					animate("next",false);
				},options.pause);
			};		
			
			if(options.numeric) setCurrent(0);
		
			if(!options.continuous && options.controlsFade){					
				$("a","#"+options.prevId).hide();
				$("a","#"+options.firstId).hide();				
			};				
			
		});
	  
	};

})(jQuery);


//////////////////////////////////////////////////////////////////////////////////////////
//    Modul: "Slider für Produkte "                                 //
//////////////////////////////////////////////////////////////////////////////////////////

/*!
 * jCarousel - Riding carousels with jQuery
 *   http://sorgalla.com/jcarousel/
 *
 * Copyright (c) 2006 Jan Sorgalla (http://sorgalla.com)
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 *
 * Built on top of the jQuery library
 *   http://jquery.com
 *
 * Inspired by the "Carousel Component" by Bill Scott
 *   http://billwscott.com/carousel/
 */

(function(i){var q={vertical:false,rtl:false,start:1,offset:1,size:null,scroll:3,visible:null,animation:"normal",easing:"swing",auto:0,wrap:null,initCallback:null,reloadCallback:null,itemLoadCallback:null,itemFirstInCallback:null,itemFirstOutCallback:null,itemLastInCallback:null,itemLastOutCallback:null,itemVisibleInCallback:null,itemVisibleOutCallback:null,buttonNextHTML:"<div></div>",buttonPrevHTML:"<div></div>",buttonNextEvent:"click",buttonPrevEvent:"click",buttonNextCallback:null,buttonPrevCallback:null, itemFallbackDimension:null},r=false;i(window).bind("load.jcarousel",function(){r=true});i.jcarousel=function(a,c){this.options=i.extend({},q,c||{});this.autoStopped=this.locked=false;this.buttonPrevState=this.buttonNextState=this.buttonPrev=this.buttonNext=this.list=this.clip=this.container=null;if(!c||c.rtl===undefined)this.options.rtl=(i(a).attr("dir")||i("html").attr("dir")||"").toLowerCase()=="rtl";this.wh=!this.options.vertical?"width":"height";this.lt=!this.options.vertical?this.options.rtl? "right":"left":"top";for(var b="",d=a.className.split(" "),f=0;f<d.length;f++)if(d[f].indexOf("jcarousel-skin")!=-1){i(a).removeClass(d[f]);b=d[f];break}if(a.nodeName.toUpperCase()=="UL"||a.nodeName.toUpperCase()=="OL"){this.list=i(a);this.container=this.list.parent();if(this.container.hasClass("jcarousel-clip")){if(!this.container.parent().hasClass("jcarousel-container"))this.container=this.container.wrap("<div></div>");this.container=this.container.parent()}else if(!this.container.hasClass("jcarousel-container"))this.container= this.list.wrap("<div></div>").parent()}else{this.container=i(a);this.list=this.container.find("ul,ol").eq(0)}b!==""&&this.container.parent()[0].className.indexOf("jcarousel-skin")==-1&&this.container.wrap('<div class=" '+b+'"></div>');this.clip=this.list.parent();if(!this.clip.length||!this.clip.hasClass("jcarousel-clip"))this.clip=this.list.wrap("<div></div>").parent();this.buttonNext=i(".jcarousel-next",this.container);if(this.buttonNext.size()===0&&this.options.buttonNextHTML!==null)this.buttonNext= this.clip.after(this.options.buttonNextHTML).next();this.buttonNext.addClass(this.className("jcarousel-next"));this.buttonPrev=i(".jcarousel-prev",this.container);if(this.buttonPrev.size()===0&&this.options.buttonPrevHTML!==null)this.buttonPrev=this.clip.after(this.options.buttonPrevHTML).next();this.buttonPrev.addClass(this.className("jcarousel-prev"));this.clip.addClass(this.className("jcarousel-clip")).css({overflow:"hidden",position:"relative"});this.list.addClass(this.className("jcarousel-list")).css({overflow:"hidden", position:"relative",top:0,margin:0,padding:0}).css(this.options.rtl?"right":"left",0);this.container.addClass(this.className("jcarousel-container")).css({position:"relative"});!this.options.vertical&&this.options.rtl&&this.container.addClass("jcarousel-direction-rtl").attr("dir","rtl");var j=this.options.visible!==null?Math.ceil(this.clipping()/this.options.visible):null;b=this.list.children("li");var e=this;if(b.size()>0){var g=0,k=this.options.offset;b.each(function(){e.format(this,k++);g+=e.dimension(this, j)});this.list.css(this.wh,g+100+"px");if(!c||c.size===undefined)this.options.size=b.size()}this.container.css("display","block");this.buttonNext.css("display","block");this.buttonPrev.css("display","block");this.funcNext=function(){e.next()};this.funcPrev=function(){e.prev()};this.funcResize=function(){e.reload()};this.options.initCallback!==null&&this.options.initCallback(this,"init");if(!r&&i.browser.safari){this.buttons(false,false);i(window).bind("load.jcarousel",function(){e.setup()})}else this.setup()}; var h=i.jcarousel;h.fn=h.prototype={jcarousel:"0.2.7"};h.fn.extend=h.extend=i.extend;h.fn.extend({setup:function(){this.prevLast=this.prevFirst=this.last=this.first=null;this.animating=false;this.tail=this.timer=null;this.inTail=false;if(!this.locked){this.list.css(this.lt,this.pos(this.options.offset)+"px");var a=this.pos(this.options.start,true);this.prevFirst=this.prevLast=null;this.animate(a,false);i(window).unbind("resize.jcarousel",this.funcResize).bind("resize.jcarousel",this.funcResize)}}, reset:function(){this.list.empty();this.list.css(this.lt,"0px");this.list.css(this.wh,"10px");this.options.initCallback!==null&&this.options.initCallback(this,"reset");this.setup()},reload:function(){this.tail!==null&&this.inTail&&this.list.css(this.lt,h.intval(this.list.css(this.lt))+this.tail);this.tail=null;this.inTail=false;this.options.reloadCallback!==null&&this.options.reloadCallback(this);if(this.options.visible!==null){var a=this,c=Math.ceil(this.clipping()/this.options.visible),b=0,d=0; this.list.children("li").each(function(f){b+=a.dimension(this,c);if(f+1<a.first)d=b});this.list.css(this.wh,b+"px");this.list.css(this.lt,-d+"px")}this.scroll(this.first,false)},lock:function(){this.locked=true;this.buttons()},unlock:function(){this.locked=false;this.buttons()},size:function(a){if(a!==undefined){this.options.size=a;this.locked||this.buttons()}return this.options.size},has:function(a,c){if(c===undefined||!c)c=a;if(this.options.size!==null&&c>this.options.size)c=this.options.size;for(var b= a;b<=c;b++){var d=this.get(b);if(!d.length||d.hasClass("jcarousel-item-placeholder"))return false}return true},get:function(a){return i(".jcarousel-item-"+a,this.list)},add:function(a,c){var b=this.get(a),d=0,f=i(c);if(b.length===0){var j,e=h.intval(a);for(b=this.create(a);;){j=this.get(--e);if(e<=0||j.length){e<=0?this.list.prepend(b):j.after(b);break}}}else d=this.dimension(b);if(f.get(0).nodeName.toUpperCase()=="LI"){b.replaceWith(f);b=f}else b.empty().append(c);this.format(b.removeClass(this.className("jcarousel-item-placeholder")), a);f=this.options.visible!==null?Math.ceil(this.clipping()/this.options.visible):null;d=this.dimension(b,f)-d;a>0&&a<this.first&&this.list.css(this.lt,h.intval(this.list.css(this.lt))-d+"px");this.list.css(this.wh,h.intval(this.list.css(this.wh))+d+"px");return b},remove:function(a){var c=this.get(a);if(!(!c.length||a>=this.first&&a<=this.last)){var b=this.dimension(c);a<this.first&&this.list.css(this.lt,h.intval(this.list.css(this.lt))+b+"px");c.remove();this.list.css(this.wh,h.intval(this.list.css(this.wh))- b+"px")}},next:function(){this.tail!==null&&!this.inTail?this.scrollTail(false):this.scroll((this.options.wrap=="both"||this.options.wrap=="last")&&this.options.size!==null&&this.last==this.options.size?1:this.first+this.options.scroll)},prev:function(){this.tail!==null&&this.inTail?this.scrollTail(true):this.scroll((this.options.wrap=="both"||this.options.wrap=="first")&&this.options.size!==null&&this.first==1?this.options.size:this.first-this.options.scroll)},scrollTail:function(a){if(!(this.locked|| this.animating||!this.tail)){this.pauseAuto();var c=h.intval(this.list.css(this.lt));c=!a?c-this.tail:c+this.tail;this.inTail=!a;this.prevFirst=this.first;this.prevLast=this.last;this.animate(c)}},scroll:function(a,c){if(!(this.locked||this.animating)){this.pauseAuto();this.animate(this.pos(a),c)}},pos:function(a,c){var b=h.intval(this.list.css(this.lt));if(this.locked||this.animating)return b;if(this.options.wrap!="circular")a=a<1?1:this.options.size&&a>this.options.size?this.options.size:a;for(var d= this.first>a,f=this.options.wrap!="circular"&&this.first<=1?1:this.first,j=d?this.get(f):this.get(this.last),e=d?f:f-1,g=null,k=0,l=false,m=0;d?--e>=a:++e<a;){g=this.get(e);l=!g.length;if(g.length===0){g=this.create(e).addClass(this.className("jcarousel-item-placeholder"));j[d?"before":"after"](g);if(this.first!==null&&this.options.wrap=="circular"&&this.options.size!==null&&(e<=0||e>this.options.size)){j=this.get(this.index(e));if(j.length)g=this.add(e,j.clone(true))}}j=g;m=this.dimension(g);if(l)k+= m;if(this.first!==null&&(this.options.wrap=="circular"||e>=1&&(this.options.size===null||e<=this.options.size)))b=d?b+m:b-m}f=this.clipping();var p=[],o=0,n=0;j=this.get(a-1);for(e=a;++o;){g=this.get(e);l=!g.length;if(g.length===0){g=this.create(e).addClass(this.className("jcarousel-item-placeholder"));j.length===0?this.list.prepend(g):j[d?"before":"after"](g);if(this.first!==null&&this.options.wrap=="circular"&&this.options.size!==null&&(e<=0||e>this.options.size)){j=this.get(this.index(e));if(j.length)g= this.add(e,j.clone(true))}}j=g;m=this.dimension(g);if(m===0)throw Error("jCarousel: No width/height set for items. This will cause an infinite loop. Aborting...");if(this.options.wrap!="circular"&&this.options.size!==null&&e>this.options.size)p.push(g);else if(l)k+=m;n+=m;if(n>=f)break;e++}for(g=0;g<p.length;g++)p[g].remove();if(k>0){this.list.css(this.wh,this.dimension(this.list)+k+"px");if(d){b-=k;this.list.css(this.lt,h.intval(this.list.css(this.lt))-k+"px")}}k=a+o-1;if(this.options.wrap!="circular"&& this.options.size&&k>this.options.size)k=this.options.size;if(e>k){o=0;e=k;for(n=0;++o;){g=this.get(e--);if(!g.length)break;n+=this.dimension(g);if(n>=f)break}}e=k-o+1;if(this.options.wrap!="circular"&&e<1)e=1;if(this.inTail&&d){b+=this.tail;this.inTail=false}this.tail=null;if(this.options.wrap!="circular"&&k==this.options.size&&k-o+1>=1){d=h.margin(this.get(k),!this.options.vertical?"marginRight":"marginBottom");if(n-d>f)this.tail=n-f-d}if(c&&a===this.options.size&&this.tail){b-=this.tail;this.inTail= true}for(;a-- >e;)b+=this.dimension(this.get(a));this.prevFirst=this.first;this.prevLast=this.last;this.first=e;this.last=k;return b},animate:function(a,c){if(!(this.locked||this.animating)){this.animating=true;var b=this,d=function(){b.animating=false;a===0&&b.list.css(b.lt,0);if(!b.autoStopped&&(b.options.wrap=="circular"||b.options.wrap=="both"||b.options.wrap=="last"||b.options.size===null||b.last<b.options.size||b.last==b.options.size&&b.tail!==null&&!b.inTail))b.startAuto();b.buttons();b.notify("onAfterAnimation"); if(b.options.wrap=="circular"&&b.options.size!==null)for(var f=b.prevFirst;f<=b.prevLast;f++)if(f!==null&&!(f>=b.first&&f<=b.last)&&(f<1||f>b.options.size))b.remove(f)};this.notify("onBeforeAnimation");if(!this.options.animation||c===false){this.list.css(this.lt,a+"px");d()}else this.list.animate(!this.options.vertical?this.options.rtl?{right:a}:{left:a}:{top:a},this.options.animation,this.options.easing,d)}},startAuto:function(a){if(a!==undefined)this.options.auto=a;if(this.options.auto===0)return this.stopAuto(); if(this.timer===null){this.autoStopped=false;var c=this;this.timer=window.setTimeout(function(){c.next()},this.options.auto*1E3)}},stopAuto:function(){this.pauseAuto();this.autoStopped=true},pauseAuto:function(){if(this.timer!==null){window.clearTimeout(this.timer);this.timer=null}},buttons:function(a,c){if(a==null){a=!this.locked&&this.options.size!==0&&(this.options.wrap&&this.options.wrap!="first"||this.options.size===null||this.last<this.options.size);if(!this.locked&&(!this.options.wrap||this.options.wrap== "first")&&this.options.size!==null&&this.last>=this.options.size)a=this.tail!==null&&!this.inTail}if(c==null){c=!this.locked&&this.options.size!==0&&(this.options.wrap&&this.options.wrap!="last"||this.first>1);if(!this.locked&&(!this.options.wrap||this.options.wrap=="last")&&this.options.size!==null&&this.first==1)c=this.tail!==null&&this.inTail}var b=this;if(this.buttonNext.size()>0){this.buttonNext.unbind(this.options.buttonNextEvent+".jcarousel",this.funcNext);a&&this.buttonNext.bind(this.options.buttonNextEvent+ ".jcarousel",this.funcNext);this.buttonNext[a?"removeClass":"addClass"](this.className("jcarousel-next-disabled")).attr("disabled",a?false:true);this.options.buttonNextCallback!==null&&this.buttonNext.data("jcarouselstate")!=a&&this.buttonNext.each(function(){b.options.buttonNextCallback(b,this,a)}).data("jcarouselstate",a)}else this.options.buttonNextCallback!==null&&this.buttonNextState!=a&&this.options.buttonNextCallback(b,null,a);if(this.buttonPrev.size()>0){this.buttonPrev.unbind(this.options.buttonPrevEvent+ ".jcarousel",this.funcPrev);c&&this.buttonPrev.bind(this.options.buttonPrevEvent+".jcarousel",this.funcPrev);this.buttonPrev[c?"removeClass":"addClass"](this.className("jcarousel-prev-disabled")).attr("disabled",c?false:true);this.options.buttonPrevCallback!==null&&this.buttonPrev.data("jcarouselstate")!=c&&this.buttonPrev.each(function(){b.options.buttonPrevCallback(b,this,c)}).data("jcarouselstate",c)}else this.options.buttonPrevCallback!==null&&this.buttonPrevState!=c&&this.options.buttonPrevCallback(b, null,c);this.buttonNextState=a;this.buttonPrevState=c},notify:function(a){var c=this.prevFirst===null?"init":this.prevFirst<this.first?"next":"prev";this.callback("itemLoadCallback",a,c);if(this.prevFirst!==this.first){this.callback("itemFirstInCallback",a,c,this.first);this.callback("itemFirstOutCallback",a,c,this.prevFirst)}if(this.prevLast!==this.last){this.callback("itemLastInCallback",a,c,this.last);this.callback("itemLastOutCallback",a,c,this.prevLast)}this.callback("itemVisibleInCallback", a,c,this.first,this.last,this.prevFirst,this.prevLast);this.callback("itemVisibleOutCallback",a,c,this.prevFirst,this.prevLast,this.first,this.last)},callback:function(a,c,b,d,f,j,e){if(!(this.options[a]==null||typeof this.options[a]!="object"&&c!="onAfterAnimation")){var g=typeof this.options[a]=="object"?this.options[a][c]:this.options[a];if(i.isFunction(g)){var k=this;if(d===undefined)g(k,b,c);else if(f===undefined)this.get(d).each(function(){g(k,this,d,b,c)});else{a=function(m){k.get(m).each(function(){g(k, this,m,b,c)})};for(var l=d;l<=f;l++)l!==null&&!(l>=j&&l<=e)&&a(l)}}}},create:function(a){return this.format("<li></li>",a)},format:function(a,c){a=i(a);for(var b=a.get(0).className.split(" "),d=0;d<b.length;d++)b[d].indexOf("jcarousel-")!=-1&&a.removeClass(b[d]);a.addClass(this.className("jcarousel-item")).addClass(this.className("jcarousel-item-"+c)).css({"float":this.options.rtl?"right":"left","list-style":"none"}).attr("jcarouselindex",c);return a},className:function(a){return a+" "+a+(!this.options.vertical? "-horizontal":"-vertical")},dimension:function(a,c){var b=a.jquery!==undefined?a[0]:a,d=!this.options.vertical?(b.offsetWidth||h.intval(this.options.itemFallbackDimension))+h.margin(b,"marginLeft")+h.margin(b,"marginRight"):(b.offsetHeight||h.intval(this.options.itemFallbackDimension))+h.margin(b,"marginTop")+h.margin(b,"marginBottom");if(c==null||d==c)return d;d=!this.options.vertical?c-h.margin(b,"marginLeft")-h.margin(b,"marginRight"):c-h.margin(b,"marginTop")-h.margin(b,"marginBottom");i(b).css(this.wh, d+"px");return this.dimension(b)},clipping:function(){return!this.options.vertical?this.clip[0].offsetWidth-h.intval(this.clip.css("borderLeftWidth"))-h.intval(this.clip.css("borderRightWidth")):this.clip[0].offsetHeight-h.intval(this.clip.css("borderTopWidth"))-h.intval(this.clip.css("borderBottomWidth"))},index:function(a,c){if(c==null)c=this.options.size;return Math.round(((a-1)/c-Math.floor((a-1)/c))*c)+1}});h.extend({defaults:function(a){return i.extend(q,a||{})},margin:function(a,c){if(!a)return 0; var b=a.jquery!==undefined?a[0]:a;if(c=="marginRight"&&i.browser.safari){var d={display:"block","float":"none",width:"auto"},f,j;i.swap(b,d,function(){f=b.offsetWidth});d.marginRight=0;i.swap(b,d,function(){j=b.offsetWidth});return j-f}return h.intval(i.css(b,c))},intval:function(a){a=parseInt(a,10);return isNaN(a)?0:a}});i.fn.jcarousel=function(a){if(typeof a=="string"){var c=i(this).data("jcarousel"),b=Array.prototype.slice.call(arguments,1);return c[a].apply(c,b)}else return this.each(function(){i(this).data("jcarousel", new h(this,a))})}})(jQuery);



//////////////////////////////////////////////////////////////////////////////////////////
//    Modul: "Auswahl der Kundenart "                                 //
//////////////////////////////////////////////////////////////////////////////////////////


function ws_address_change()
{
	$('#address_select').click();
}


//////////////////////////////////////////////////////////////////////////////////////////
//    Modul: "Einblenden der abhängigen Suche "Alle Testverfahren" nach Auswahl "                                 //
//////////////////////////////////////////////////////////////////////////////////////////

(function($) {    
    $.fn.extend({                  
        ws_show_on_key: function(params) {
            //Standard - Konfiguration
            var conf = {
                key: null,
                show: null,
                select_on_hide: 0
            };
            //Ergänze Parameter mit conf
            $.extend(conf, params);

            // Prüfe ob alle wichtigen Parameter vorhanden sind
            if(typeof(conf.key) != "string" ||
               (typeof(conf.show) != "string" &&
                typeof(conf.show) != "object"))
            {
                return this;
            }
            
            // Prüfe ob die selektierte Selectbox den key als aktuelle Option
            // besitzt. Wenn ja:
            if($(this).val() == conf.key)
            {
                // falls show ein String ist:
                // Zeige diesen an
                if(typeof(conf.show) == "string")
                {
                    $(conf.show).show();
                }
                // Falls show eine Liste ist gehe jeden Eintrag durch
                // und zeige die einzelne Einträge
                else
                {
                    for(var iS = 0; iS < conf.show.length; iS++)
                    {
                        // Prüfe zuvor ob der aktuelle Arrayeintrag ein
                        // String ist
                        if(typeof(conf.show[iS]) == "string")
                        {
                            $(conf.show[iS]).show();
                        }
                    }
                }
            }
            // Falls aktuelle Option nicht dem key entsprcht
            // Verstecke die Ziel-Selectboxen
            else
            {
                // Prüfe zuerst, ob Ziel ein String ist
                if(typeof(conf.show) == "string")
                {   
                    // Verstecke Selectbox
                    $(conf.show).hide();
                    
                    // Falls Optionaler Parameter eine Zahl ist, dann
                    // setze Option der zu versteckenden Selectbox um
                    if(typeof(conf.select_on_hide) == "number")
                    {
                        $(conf.show)
                            .find("option:eq(" +  conf.select_on_hide + ")")
                            .attr("selected", true);
                    }
                }
                // Anosnsten falls ZielListe vorhanden ist
                else
                {
                    // Gehe jeden durch, verstecke Eintrag und
                    // setze optional die aktuelle Option um
                    for(var iH = 0; iH < conf.show.length; iH++)
                    {
                        if(typeof(conf.show[iH]) == "string")
                        {
                            $(conf.show[iH]).hide();
                            if(typeof(conf.select_on_hide) == "number")
                            {
                                $(conf.show[iH])
                                    .find("option:eq(" +  conf.select_on_hide + ")")
                                    .attr("selected", true);
                            }
                        }
                    }
                }
            }   
            return this;
        }
    });
})(jQuery);


$(document).ready(function(){
    var params = {
        key: "Testverfahren",
        show: ["select[name=suchealletestverfahren]"],
        select_on_hide: 0
        
    };
    
    $('select[name=suchetestpruefung]').ws_show_on_key(params);
});



//////////////////////////////////////////////////////////////////////////////////////////
//    Modul: "Animierte Boxen am rechten Browserrand "                                 //
//////////////////////////////////////////////////////////////////////////////////////////

(function($){
 	$.fn.extend({
 	    animateLeftFunction:function(params){
 	        var conf = {};
		  	$.extend(conf, params);
			return $(this).each(function(){
										 
				var self = this;
				var id_leftcontainer = conf.idleftcontent;
				var animate_time = conf.animatetime;	
				
				var overflow_content = $('#'+$(self).attr('id')+'_overflow');
				overflow_content.height($('#'+$(self).attr('id')+' .content').outerHeight());
				overflow_content.width($('#'+$(self).attr('id')+' .content').outerWidth());
				
				//Berechnung der Breite des äußeren Divs
				var outer_div_width = $(overflow_content).outerWidth();
				
				$(self).css('width',outer_div_width);
				
				//Berechnung der Breite des Bezugscontainers zu Ausrichtung
				var leftcontent_width = $(id_leftcontainer).outerWidth();
				
				
				var outer_div_left = leftcontent_width - outer_div_width + $(id_leftcontainer).offset().left;
				
				$(self).css('left',outer_div_left);
				
				var animate_time_img = animate_time*0.8; // Einstellung der Geschwindigkeit des Pfeilwechsels
				var content = $('#'+$(self).attr('id')+' .content');
				
				$('#'+$(self).attr('id')+' .animate_in_icon').toggle(function () {
					overflow_content.show();
					$(self).css('z-index','999');
					content.animate({marginLeft: '0px'} , animate_time);	
					setTimeout(function(){$('#'+$(self).attr('id')+' .animate_in_icon').removeClass('animate_icon_left', self).addClass('animate_icon_right', self);},animate_time_img);
				},function(){
					content.animate({marginLeft: '100%'} , animate_time);	
					setTimeout(function(){overflow_content.hide();},animate_time);
					setTimeout(function(){$(self).css('z-index','1');},animate_time);
					setTimeout(function(){$('#'+$(self).attr('id')+' .animate_in_icon').removeClass('animate_icon_right', self).addClass('animate_icon_left', self);},animate_time_img);
				});
				

			});
	    }
	});
})(jQuery);
