/*!
 * jQuery Tools dev - The missing UI library for the Web
 * 
 * overlay/overlay.js
 * scrollable/scrollable.js
 * tabs/tabs.js
 * toolbox/toolbox.expose.js
 * toolbox/toolbox.flashembed.js
 * 
 * NO COPYRIGHTS OR LICENSES. DO WHAT YOU LIKE.
 * 
 * http://flowplayer.org/tools/
 * 
 */
(function(a){a.tools=a.tools||{version:"dev"},a.tools.overlay={addEffect:function(a,b,d){c[a]=[b,d]},conf:{close:null,closeOnClick:!0,closeOnEsc:!0,closeSpeed:"fast",effect:"default",fixed:!a.browser.msie||a.browser.version>6,left:"center",load:!1,mask:null,oneInstance:!0,speed:"normal",target:null,top:"10%"}};var b=[],c={};a.tools.overlay.addEffect("default",function(b,c){var d=this.getConf(),e=a(window);d.fixed||(b.top+=e.scrollTop(),b.left+=e.scrollLeft()),b.position=d.fixed?"fixed":"absolute",this.getOverlay().css(b).fadeIn(d.speed,c)},function(a){this.getOverlay().fadeOut(this.getConf().closeSpeed,a)});function d(d,e){var f=this,g=d.add(f),h=a(window),i,j,k,l=a.tools.expose&&(e.mask||e.expose),m=Math.random().toString().slice(10);l&&(typeof l=="string"&&(l={color:l}),l.closeOnClick=l.closeOnEsc=!1);var n=e.target||d.attr("rel");j=n?a(n):null||d;if(!j.length)throw"Could not find Overlay: "+n;d&&d.index(j)==-1&&d.click(function(a){f.load(a);return a.preventDefault()}),a.extend(f,{load:function(d){if(f.isOpened())return f;var i=c[e.effect];if(!i)throw"Overlay: cannot find effect : \""+e.effect+"\"";e.oneInstance&&a.each(b,function(){this.close(d)}),d=d||a.Event(),d.type="onBeforeLoad",g.trigger(d);if(d.isDefaultPrevented())return f;k=!0,l&&a(j).expose(l);var n=e.top,o=e.left,p=j.outerWidth({margin:!0}),q=j.outerHeight({margin:!0});typeof n=="string"&&(n=n=="center"?Math.max((h.height()-q)/2,0):parseInt(n,10)/100*h.height()),o=="center"&&(o=Math.max((h.width()-p)/2,0)),i[0].call(f,{top:n,left:o},function(){k&&(d.type="onLoad",g.trigger(d))}),l&&e.closeOnClick&&a.mask.getMask().one("click",f.close),e.closeOnClick&&a(document).bind("click."+m,function(b){a(b.target).parents(j).length||f.close(b)}),e.closeOnEsc&&a(document).bind("keydown."+m,function(a){a.keyCode==27&&f.close(a)});return f},close:function(b){if(!f.isOpened())return f;b=b||a.Event(),b.type="onBeforeClose",g.trigger(b);if(!b.isDefaultPrevented()){k=!1,c[e.effect][1].call(f,function(){b.type="onClose",g.trigger(b)}),a(document).unbind("click."+m).unbind("keydown."+m),l&&a.mask.close();return f}},getOverlay:function(){return j},getTrigger:function(){return d},getClosers:function(){return i},isOpened:function(){return k},getConf:function(){return e}}),a.each("onBeforeLoad,onStart,onLoad,onBeforeClose,onClose".split(","),function(b,c){a.isFunction(e[c])&&a(f).bind(c,e[c]),f[c]=function(b){b&&a(f).bind(c,b);return f}}),i=j.find(e.close||".close"),!i.length&&!e.close&&(i=a("<a class=\"close\"></a>"),j.prepend(i)),i.click(function(a){f.close(a)}),e.load&&f.load()}a.fn.overlay=function(c){var e=this.data("overlay");if(e)return e;a.isFunction(c)&&(c={onBeforeLoad:c}),c=a.extend(!0,{},a.tools.overlay.conf,c),this.each(function(){e=new d(a(this),c),b.push(e),a(this).data("overlay",e)});return c.api?e:this}})(jQuery);
(function(a){a.tools=a.tools||{version:"dev"},a.tools.scrollable={conf:{activeClass:"active",circular:!1,clonedClass:"cloned",disabledClass:"disabled",easing:"swing",initialIndex:0,item:"> *",items:".items",keyboard:!0,mousewheel:!1,next:".next",prev:".prev",size:1,speed:400,vertical:!1,touch:!0,wheelSpeed:0}};function b(a,b){var c=parseInt(a.css(b),10);if(c)return c;var d=a[0].currentStyle;return d&&d.width&&parseInt(d.width,10)}function c(b,c){var d=a(c);return d.length<2?d:b.parent().find(c)}var d;function e(b,e){var f=this,g=b.add(f),h=b.children(),i=0,j=e.vertical;d||(d=f),h.length>1&&(h=a(e.items,b)),e.size>1&&(e.circular=!1),a.extend(f,{getConf:function(){return e},getIndex:function(){return i},getSize:function(){return f.getItems().size()},getNaviButtons:function(){return n.add(o)},getRoot:function(){return b},getItemWrap:function(){return h},getItems:function(){return h.find(e.item).not("."+e.clonedClass)},move:function(a,b){return f.seekTo(i+a,b)},next:function(a){return f.move(e.size,a)},prev:function(a){return f.move(-e.size,a)},begin:function(a){return f.seekTo(0,a)},end:function(a){return f.seekTo(f.getSize()-1,a)},focus:function(){d=f;return f},addItem:function(b){b=a(b),e.circular?(h.children().last().before(b),h.children().first().replaceWith(b.clone().addClass(e.clonedClass))):(h.append(b),o.removeClass("disabled")),g.trigger("onAddItem",[b]);return f},seekTo:function(b,c,k){b.jquery||(b*=1);if(e.circular&&b===0&&i==-1&&c!==0)return f;if(!e.circular&&b<0||b>f.getSize()||b<-1)return f;var l=b;b.jquery?b=f.getItems().index(b):l=f.getItems().eq(b);var m=a.Event("onBeforeSeek");if(!k){g.trigger(m,[b,c]);if(m.isDefaultPrevented()||!l.length)return f}var n=j?{top:-l.position().top}:{left:-l.position().left};i=b,d=f,c===undefined&&(c=e.speed),h.animate(n,c,e.easing,k||function(){g.trigger("onSeek",[b])});return f}}),a.each(["onBeforeSeek","onSeek","onAddItem"],function(b,c){a.isFunction(e[c])&&a(f).bind(c,e[c]),f[c]=function(b){b&&a(f).bind(c,b);return f}});if(e.circular){var k=f.getItems().slice(-1).clone().prependTo(h),l=f.getItems().eq(1).clone().appendTo(h);k.add(l).addClass(e.clonedClass),f.onBeforeSeek(function(a,b,c){if(!a.isDefaultPrevented()){if(b==-1){f.seekTo(k,c,function(){f.end(0)});return a.preventDefault()}b==f.getSize()&&f.seekTo(l,c,function(){f.begin(0)})}});var m=b.parents().add(b).filter(function(){if(a(this).css("display")==="none")return!0});m.length?(m.show(),f.seekTo(0,0,function(){}),m.hide()):f.seekTo(0,0,function(){})}var n=c(b,e.prev).click(function(a){a.stopPropagation(),f.prev()}),o=c(b,e.next).click(function(a){a.stopPropagation(),f.next()});e.circular||(f.onBeforeSeek(function(a,b){setTimeout(function(){a.isDefaultPrevented()||(n.toggleClass(e.disabledClass,b<=0),o.toggleClass(e.disabledClass,b>=f.getSize()-1))},1)}),e.initialIndex||n.addClass(e.disabledClass)),f.getSize()<2&&n.add(o).addClass(e.disabledClass),e.mousewheel&&a.fn.mousewheel&&b.mousewheel(function(a,b){if(e.mousewheel){f.move(b<0?1:-1,e.wheelSpeed||50);return!1}});if(e.touch){var p={};h[0].ontouchstart=function(a){var b=a.touches[0];p.x=b.clientX,p.y=b.clientY},h[0].ontouchmove=function(a){if(a.touches.length==1&&!h.is(":animated")){var b=a.touches[0],c=p.x-b.clientX,d=p.y-b.clientY;f[j&&d>0||!j&&c>0?"next":"prev"](),a.preventDefault()}}}e.keyboard&&a(document).bind("keydown.scrollable",function(b){if(!(!e.keyboard||b.altKey||b.ctrlKey||b.metaKey||a(b.target).is(":input"))){if(e.keyboard!="static"&&d!=f)return;var c=b.keyCode;if(j&&(c==38||c==40)){f.move(c==38?-1:1);return b.preventDefault()}if(!j&&(c==37||c==39)){f.move(c==37?-1:1);return b.preventDefault()}}}),e.initialIndex&&f.seekTo(e.initialIndex,0,function(){})}a.fn.scrollable=function(b){var c=this.data("scrollable");if(c)return c;b=a.extend({},a.tools.scrollable.conf,b),this.each(function(){c=new e(a(this),b),a(this).data("scrollable",c)});return b.api?c:this}})(jQuery);
(function(a){a.tools=a.tools||{version:"dev"},a.tools.tabs={conf:{tabs:"a",current:"current",onBeforeClick:null,onClick:null,effect:"default",initialIndex:0,event:"click",rotate:!1,slideUpSpeed:400,slideDownSpeed:400,history:!1},addEffect:function(a,c){b[a]=c}};var b={"default":function(a,b){this.getPanes().hide().eq(a).show(),b.call()},fade:function(a,b){var c=this.getConf(),d=c.fadeOutSpeed,e=this.getPanes();d?e.fadeOut(d):e.hide(),e.eq(a).fadeIn(c.fadeInSpeed,b)},slide:function(a,b){var c=this.getConf();this.getPanes().slideUp(c.slideUpSpeed),this.getPanes().eq(a).slideDown(c.slideDownSpeed,b)},ajax:function(a,b){this.getPanes().eq(0).load(this.getTabs().eq(a).attr("href"),b)}},c,d;a.tools.tabs.addEffect("horizontal",function(b,e){if(!c){var f=this.getPanes().eq(b),g=this.getCurrentPane();d||(d=this.getPanes().eq(0).width()),c=!0,f.show(),g.animate({width:0},{step:function(a){f.css("width",d-a)},complete:function(){a(this).hide(),e.call(),c=!1}}),g.length||(e.call(),c=!1)}});function e(c,d,e){var f=this,g=c.add(this),h=c.find(e.tabs),i=d.jquery?d:c.children(d),j;h.length||(h=c.children()),i.length||(i=c.parent().find(d)),i.length||(i=a(d)),a.extend(this,{click:function(c,d){var i=h.eq(c);typeof c=="string"&&c.replace("#","")&&(i=h.filter("[href*="+c.replace("#","")+"]"),c=Math.max(h.index(i),0));if(e.rotate){var k=h.length-1;if(c<0)return f.click(k,d);if(c>k)return f.click(0,d)}if(!i.length){if(j>=0)return f;c=e.initialIndex,i=h.eq(c)}if(c===j)return f;d=d||a.Event(),d.type="onBeforeClick",g.trigger(d,[c]);if(!d.isDefaultPrevented()){b[e.effect].call(f,c,function(){j=c,d.type="onClick",g.trigger(d,[c])}),h.removeClass(e.current),i.addClass(e.current);return f}},getConf:function(){return e},getTabs:function(){return h},getPanes:function(){return i},getCurrentPane:function(){return i.eq(j)},getCurrentTab:function(){return h.eq(j)},getIndex:function(){return j},next:function(){return f.click(j+1)},prev:function(){return f.click(j-1)},destroy:function(){h.unbind(e.event).removeClass(e.current),i.find("a[href^=#]").unbind("click.T");return f}}),a.each("onBeforeClick,onClick".split(","),function(b,c){a.isFunction(e[c])&&a(f).bind(c,e[c]),f[c]=function(b){b&&a(f).bind(c,b);return f}}),e.history&&a.fn.history&&(a.tools.history.init(h),e.event="history"),h.each(function(b){a(this).bind(e.event,function(a){f.click(b,a);return a.preventDefault()})}),i.find("a[href^=#]").bind("click.T",function(b){f.click(a(this).attr("href"),b)}),location.hash&&e.tabs=="a"&&c.find("[href="+location.hash+"]").length?f.click(location.hash):(e.initialIndex===0||e.initialIndex>0)&&f.click(e.initialIndex)}a.fn.tabs=function(b,c){var d=this.data("tabs");d&&(d.destroy(),this.removeData("tabs")),a.isFunction(c)&&(c={onBeforeClick:c}),c=a.extend({},a.tools.tabs.conf,c),this.each(function(){d=new e(a(this),b,c),a(this).data("tabs",d)});return c.api?d:this}})(jQuery);
(function(a){a.tools=a.tools||{version:"dev"};var b;b=a.tools.expose={conf:{maskId:"exposeMask",loadSpeed:"slow",closeSpeed:"fast",closeOnClick:!0,closeOnEsc:!0,zIndex:9998,opacity:.8,startOpacity:0,color:"#fff",onLoad:null,onClose:null}};function c(){if(a.browser.msie){var b=a(document).height(),c=a(window).height();return[window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,b-c<20?c:b]}return[a(document).width(),a(document).height()]}function d(b){if(b)return b.call(a.mask)}var e,f,g,h,i;a.mask={load:function(j,k){if(g)return this;typeof j=="string"&&(j={color:j}),j=j||h,h=j=a.extend(a.extend({},b.conf),j),e=a("#"+j.maskId),e.length||(e=a("<div/>").attr("id",j.maskId),a("body").append(e));var l=c();e.css({position:"absolute",top:0,left:0,width:l[0],height:l[1],display:"none",opacity:j.startOpacity,zIndex:j.zIndex}),j.color&&e.css("backgroundColor",j.color);if(d(j.onBeforeLoad)===!1)return this;j.closeOnEsc&&a(document).bind("keydown.mask",function(b){b.keyCode==27&&a.mask.close(b)}),j.closeOnClick&&e.bind("click.mask",function(b){a.mask.close(b)}),a(window).bind("resize.mask",function(){a.mask.fit()}),k&&k.length&&(i=k.eq(0).css("zIndex"),a.each(k,function(){var b=a(this);/relative|absolute|fixed/i.test(b.css("position"))||b.css("position","relative")}),f=k.css({zIndex:Math.max(j.zIndex+1,i=="auto"?0:i)})),e.css({display:"block"}).fadeTo(j.loadSpeed,j.opacity,function(){a.mask.fit(),d(j.onLoad),g="full"}),g=!0;return this},close:function(){if(g){if(d(h.onBeforeClose)===!1)return this;e.fadeOut(h.closeSpeed,function(){d(h.onClose),f&&f.css({zIndex:i}),g=!1}),a(document).unbind("keydown.mask"),e.unbind("click.mask"),a(window).unbind("resize.mask")}return this},fit:function(){if(g){var a=c();e.css({width:a[0],height:a[1]})}},getMask:function(){return e},isLoaded:function(a){return a?g=="full":g},getConf:function(){return h},getExposed:function(){return f}},a.fn.mask=function(b){a.mask.load(b);return this},a.fn.expose=function(b){a.mask.load(b,this);return this}})(jQuery);
(function(){var a=document.all,b="http://www.adobe.com/go/getflashplayer",c=typeof jQuery=="function",d=/(\d+)[^\d]+(\d+)[^\d]*(\d*)/,e={width:"100%",height:"100%",id:"_"+(""+Math.random()).slice(9),allowfullscreen:!0,allowscriptaccess:"always",quality:"high",version:[3,0],onFail:null,expressInstall:null,w3c:!1,cachebusting:!1};window.attachEvent&&window.attachEvent("onbeforeunload",function(){__flash_unloadHandler=function(){},__flash_savedUnloadHandler=function(){}});function f(a,b){if(b)for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c]);return a}function g(a,b){var c=[];for(var d in a)a.hasOwnProperty(d)&&(c[d]=b(a[d]));return c}window.flashembed=function(a,b,c){typeof a=="string"&&(a=document.getElementById(a.replace("#","")));if(a){typeof b=="string"&&(b={src:b});return new j(a,f(f({},e),b),c)}};var h=f(window.flashembed,{conf:e,getVersion:function(){var a,b;try{b=navigator.plugins["Shockwave Flash"].description.slice(16)}catch(c){try{a=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"),b=a&&a.GetVariable("$version")}catch(e){try{a=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"),b=a&&a.GetVariable("$version")}catch(f){}}}b=d.exec(b);return b?[b[1],b[3]]:[0,0]},asString:function(a){if(a===null||a===undefined)return null;var b=typeof a;b=="object"&&a.push&&(b="array");switch(b){case"string":a=a.replace(new RegExp("([\"\\\\])","g"),"\\$1"),a=a.replace(/^\s?(\d+\.?\d*)%/,"$1pct");return"\""+a+"\"";case"array":return"["+g(a,function(a){return h.asString(a)}).join(",")+"]";case"function":return"\"function()\"";case"object":var c=[];for(var d in a)a.hasOwnProperty(d)&&c.push("\""+d+"\":"+h.asString(a[d]));return"{"+c.join(",")+"}"}return String(a).replace(/\s/g," ").replace(/\'/g,"\"")},getHTML:function(b,c){b=f({},b);var d="<object width=\""+b.width+"\" height=\""+b.height+"\" id=\""+b.id+"\" name=\""+b.id+"\"";b.cachebusting&&(b.src+=(b.src.indexOf("?")!=-1?"&":"?")+Math.random()),b.w3c||!a?d+=" data=\""+b.src+"\" type=\"application/x-shockwave-flash\"":d+=" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\"",d+=">";if(b.w3c||a)d+="<param name=\"movie\" value=\""+b.src+"\" />";b.width=b.height=b.id=b.w3c=b.src=null,b.onFail=b.version=b.expressInstall=null;for(var e in b)b[e]&&(d+="<param name=\""+e+"\" value=\""+b[e]+"\" />");var g="";if(c){for(var i in c)if(c[i]){var j=c[i];g+=i+"="+encodeURIComponent(/function|object/.test(typeof j)?h.asString(j):j)+"&"}g=g.slice(0,-1),d+="<param name=\"flashvars\" value='"+g+"' />"}d+="</object>";return d},isSupported:function(a){return i[0]>a[0]||i[0]==a[0]&&i[1]>=a[1]}}),i=h.getVersion();function j(c,d,e){if(h.isSupported(d.version))c.innerHTML=h.getHTML(d,e);else if(d.expressInstall&&h.isSupported([6,65]))c.innerHTML=h.getHTML(f(d,{src:d.expressInstall}),{MMredirectURL:location.href,MMplayerType:"PlugIn",MMdoctitle:document.title});else{c.innerHTML.replace(/\s/g,"")||(c.innerHTML="<h2>Flash version "+d.version+" or greater is required</h2><h3>"+(i[0]>0?"Your version is "+i:"You have no flash plugin installed")+"</h3>"+(c.tagName=="A"?"<p>Click here to download latest version</p>":"<p>Download latest version from <a href='"+b+"'>here</a></p>"),c.tagName=="A"&&(c.onclick=function(){location.href=b}));if(d.onFail){var g=d.onFail.call(this);typeof g=="string"&&(c.innerHTML=g)}}a&&(window[d.id]=document.getElementById(d.id)),f(this,{getRoot:function(){return c},getOptions:function(){return d},getConf:function(){return e},getApi:function(){return c.firstChild}})}c&&(jQuery.tools=jQuery.tools||{version:"dev"},jQuery.tools.flashembed={conf:e},jQuery.fn.flashembed=function(a,b){return this.each(function(){jQuery(this).data("flashembed",flashembed(this,a,b))})})})();



/**************
* JQUERY PLUGINS
***************/
(function($) {
	var t = $.tools.overlay; 
	t.plugins = t.plugins || {};

	/**
	 * Overlay Gallery plugin, version: 1.0.0
	 * 
	 * Copyright (c) 2009 Tero Piirainen
	 * http://flowplayer.org/tools/overlay.html#gallery
	 *
	 * Dual licensed under MIT and GPL 2+ licenses
	 * http://www.opensource.org/licenses
	 *
	 * Since  : July 2009
	 * Date: ${date}
	 * Revision: ${revision} 
	 */
	// TODO: next(), prev(), getIndex(), onChange event
	// version number
	t.plugins.gallery = {
		version: '1.0.0', 
		conf: { 
			imgId: 'img',
			next: '.next',
			prev: '.prev',
			info: '.info',
			progress: '.progress',
			disabledClass: 'disabled',
			activeClass: 'active',
			opacity: 0.8,
			speed: 'slow',
			template: '<strong>${title}</strong> <span>Image ${index} of ${total}</span>',  
			autohide: true,
			preload: true,
			api: false,
			minWidth: 0,
			minHeight: 0,
			// Addtions by Franz Koch
			attrTarget:		'el',//'el.children(\'img\')',
			useAsTitle:		'el.attr(\'title\')',//'$(\'#\'+el.attr(\'name\')).html()', //available objects: $this (jQueryObject from matching lightbox enabled item), $tgt (jQueryObject from settings.attrTarget)
			imageHolder:	'.image'
		}
	};			

	$.fn.gallery = function(opts) {
		
		var conf = $.extend({}, t.plugins.gallery.conf), api;
		$.extend(conf, opts);   	

		// common variables for all gallery images
		api = this.overlay();
		
		var links = this,
			 overlay = api.getOverlay(),
			 next = overlay.find(conf.next),
			 prev = overlay.find(conf.prev),
			 info = overlay.find(conf.info),
			 progress = overlay.find(conf.progress),
			 els = prev.add(next).css({opacity: conf.opacity}),
			 close = api.getClosers(), 			 
			 index,
			 animating = false,
			 targets = [],
			 imageHolder = overlay.find(conf.imageHolder) || overlay;

		// remove duplicate links (by Franz Koch)
		links = $($.grep(links, function(o, i) {
			var l = $(o).attr('href');
			if ($.inArray(l,targets) > -1) {
				return false;
			}
			targets.push(l);
			return true;
		}));

//{{{ load 

		function load(el) {
			
			//progress.fadeIn();
			overlay.addClass('loading');
			els.hide(); close.hide(); info.hide();
			animating = true;
			
			var url = el.attr("href"); 
			
			// download the image 
			var image = new Image();
			
			image.onload = function() {
				
				progress.fadeOut();
				
				// find image inside overlay
				var img = $("#" + conf.imgId, imageHolder); 
				
				// or append it to the overlay 
				if (!img.length) { 
					img = $("<img/>").attr("id", conf.imgId).css("visibility", "hidden");
					imageHolder.prepend(img);
				}
				
				// make initially invisible to get it's dimensions
				img.attr("src", url).css("visibility", "hidden"); 			
					
				// animate overlay to fit the image dimensions
				var width = Math.max(image.width,conf.minWidth),
					left = ($(window).width() - width - (overlay.outerWidth() - overlay.width())) / 2;
					
				// calculate index number
				index = links.index(links.filter("[href=" +url+ "]"));	
				
				// activate trigger
				links.removeClass(conf.activeClass).eq(index).addClass(conf.activeClass);
				
				// enable/disable next/prev links
				var cls = conf.disabledClass;
				els.removeClass(cls);

				if (index === 0) { prev.addClass(cls); }
				if (index == links.length -1) { next.addClass(cls); }
				
				// prepare title (by Franz Koch)
				var $tgt = eval(conf.attrTarget), title='';
				if(conf.useAsTitle) {
					title = eval(conf.useAsTitle);
				} else {
					title = el.attr("title") || el.data("title") || '';
				}
				// set info text & width
				var text = conf.template
					.replace("${title}", title)
					.replace("${index}", index + 1)
					.replace("${total}", links.length),
					height = Math.max(image.height,conf.minHeight);
					
				//var padd = parseInt(info.css("paddingLeft"), 10) +  parseInt(info.css("paddingRight"), 10);
				info.html(text);//.css({width: width - padd});
				
				overlay.removeClass('loading').animate(
					{width: width,left: left, height: height}, conf.speed, function() {
					animating = false;
					overlay.css('height','auto');
					// gradually show the image
					img.add(info).hide().css("visibility", "visible").fadeIn(function() {
						if (!conf.autohide) {
							showEls();
						}
					});								

				}); 
			};
			
			image.onerror = function() {
				imageHolder.html("Cannot find image " + url);
				overlay.fadeIn()
			};
			
			image.src = url;
			
			if (conf.preload) {
				links.filter(":eq(" +(index-1)+ "), :eq(" +(index+1)+ ")").each(function()  {
					var img = new Image();
					img.src = $(this).attr("href");					
				});
			}
			
		}
		
//}}}


		// function to add click handlers to next/prev links	 
		function addClick(el, isNext)  {
			el.click(function() {
				if (el.hasClass(conf.disabledClass)) { return; }				
				
				// find the triggering link
				var trigger = links.eq(i = index + (isNext ? 1 : -1));			
					 
				// if found load it's href
				if (trigger.length) { load(trigger); }
			});				
		}

		// assign next/prev click handlers
		addClick(next, true);
		addClick(prev);

		
		// arrow keys
		$(document).keydown(function(evt) {
			if (!overlay.is(":visible") || evt.altKey || evt.ctrlKey) { return; }
			
			if (evt.keyCode == 37 || evt.keyCode == 39) {					
				var btn = evt.keyCode == 37 ? prev : next;
				btn.click();
				return evt.preventDefault();
			}	
			return true;			
		});		
		
		function showEls() {
			if (!imageHolder.is(":animated") && !animating) {
				els.show(); close.show(); info.slideDown();	
			}	
		}
		
		// autohide functionality
		if (conf.autohide) { 
			overlay.hover(showEls, function() { els.fadeOut(); /*info.slideUp();*/	close.hide(); }).mouseover(showEls);
		}		
		
		// load a proper gallery image when overlay trigger is clicked
		var ret;
		
		this.each(function() {
			var el = $(this), api = el.overlay(), ret = api;
			
			api.onBeforeLoad(function() {
				load(el);
			});
			
			api.onClose(function() {
				links.removeClass(conf.activeClass);	
			});			
		});  		
		return conf.api ? ret : this;
	};
})(jQuery); // Call and execute the function immediately passing the jQuery object



/**************
* CUSTOM SCRIPTS FOR WEBSITE
***************/
(function($) {
	// General methods
	var base = $('base').attr('href'),
		$closeButton = $('<span class="close"></span>');
	$.enet = {};
	$.enet.baseUrl = base.substr(-1) != '/' ? base+'/' : base;
	$.enet.protocol = (document.location.protocol == 'https:' ? 'https:' : 'http:')+'//';
	$.enet.templatePath = 'templates/eurobaustoff-marketing/';
	$.enet.absTemplatePath = $.enet.baseUrl+$.enet.templatePath;
	$.enet.locale = typeof(locale) != 'undefined' ? locale : 'de';
	$.enet.ajaxType = '644';


/**************
* LOCALIZATION
***************/
	$.enet.lll = {
		'default' : {
			// general
			'error'						:	'Error',
			'attention'					:	'Attention',
			'close'						:	'Close',
			// lightbox
			'showNextImage'				:	'next Image',
			'showPrevImage'				:	'previous Image',
			'image'						:	'Image',
			'of'						:	'of',
			// form validation
			'pleaseSelect'				:	'Please select',
			'evalMsgValidEmail'			:	'Please enter a valid e-mail address',
			'evalMsgFillRequiredFields' :	'Please fill a marked fields',
			'evalMsgInteger'			:	'Please enter a valid number for ${label}',
			'evalMsgRepeat'				:	'The repeated input did not match the first one',
			// ajax
			'errorMessageAjaxRequest' 	:	'An error occured during your request. Please try again later.'
		},
		'de' : {
			// general
			'error'						:	'Fehler',
			'attention'					:	'Achtung',
			'close'						:	'Schließen',
			// lightbox
			'showNextImage'				:	'nächstes Bild',
			'showPrevImage'				:	'vorheriges Bild',
			'image'						:	'Bild',
			'of'						:	'von',
			// form validation
			'pleaseSelect'				:	'Bitte wählen',
			'evalMsgValidEmail'			:	'Geben Sie eine gültige E-Mail-Adresse an',
			'evalMsgFillRequiredFields' :	'Bitte füllen Sie alle markierten Felder aus.',
			'evalMsgInteger'			:	'Geben Sie bei ${label} eine gültige Zahl ein',
			'evalMsgRepeat'				:	'Die wiederholte Eingabe stimmt leider nicht mit der ersten überein',
			// ajax
			'errorMessageAjaxRequest' 	:	'Bei der Verarbeitung Ihrer Anfrage ist leider ein Fehler aufgetreten. Bitte versuchen Sie es erneut.'
		}
	};
	
	$.enet.l18n = function (k) {
		try {
			return $.enet.lll[$.enet.locale][k];
		} catch(e) {
			try {
				return $.enet.lll['default'][k];
			} catch(e) {
				return '';
			}
		}
	}

/**************
* HELPER FUNCTIONS
***************/

	$.enet.absoluteUrl = function(url) {
		if (!url.match(/^(http|https|ftp):\/\/.*/)) {
			url = $.enet.baseUrl+(url.substr(0,1) == '/' ? url.substr(1) : url);
		}
		return url;
	}

/*
	$.enet.extendImageRotator = function(selector,url) {
		$t = $(selector);
		if($t.hasClass('imageRotator')) {
			$.get(url,function(data,status) {
				if(status == 'success' || status == 'notmodified') {
					var $d = $($('data',data).text()),
						$items = $d.children('li').removeClass('first'),
						current = $t.children('li').removeClass('last').attr('id');
					$d.hide();
	
					if($items.length > 1) {
						$items.each(function() {
							if($(this).attr('id') == current) {
								$(this).remove();
							}
						});
						$items.appendTo(selector);
						$.enet.enableDiaShow($t);
					}
					$d.remove();
				}
			},'xml');
		}
	}
*/
/*
	$.enet.enableDiaShow = function(t) {
		if(t.children().length > 1) {
			t.diashow({delay:3000,speed:2000,randomize:true,applyHeightToContainer:true,animateAtSameTime:true,pauseOnHover:false});
		}
	}
*/
	$.enet.enrichContent = function(selector) {
		var $s = $(selector);
/*
		// slideshows
		$s.find('.imageRotator').each(function() {
			$.enet.enableDiaShow($(this));
		});
*/
		
		// scroller
		$s.find('.scrollable').each(function() {
			var $scroller = $(this), $childs = $scroller.children(), $container='',$menu='', w=$scroller.outerWidth(), h=0, count = Math.round(w / $childs.eq(0).outerWidth());
			if($childs.outerWidth() * $childs.length > w) {
				$container = $scroller.wrap('<div class="scrollerContainer"></div>').parent();
				h = $scroller.outerHeight();
				$container.css('width',w).css('height',h);
				$menu = $('<ul class="scrollerNavi"></ul>');
				$menu.append('<li class="prev"><a title="'+$.enet.l18n('showPrevImage')+'"><span>&nbsp;<dfn title="'+$.enet.l18n('showPrevImage')+'">&lt;</dfn></span></a></li><li class="next"><a title="'+$.enet.l18n('showNextImage')+'"><span>&nbsp;<dfn title="'+$.enet.l18n('showNextImage')+'">&gt;</dfn></span></a></li>');
				//$navi = $('<div class="navi"/>');
				//$scroller.diashow({applyHeightToContainer:false,animateAtSameTime:true,autoPlay:false,buttonNext:$menu.find('.next a'),buttonPrev:$menu.find('.prev a')});
				var api = $container.append($menu).scrollable({items:$scroller,size:count,clickable:false,api:true});

				// show/hide all images at once
				if ($scroller.hasClass('imageStrip')) {
					var $open = $('<a href="#" class="link-down open"><span>Alle Fotos</span></a>').click(function(e) {
						$open.hide();
						$menu.fadeOut();
						api.seekTo(0,0);
						api.getConf().keyboard = false;
						$container.addClass('showAll').animate({'height':$scroller.outerHeight()},function() {
							$close.fadeIn();
						});
						return e.preventDefault();
					}).hide(),
					$close = $('<a href="#" class="link-up close">Weniger Fotos</a>').click(function(e) {
						$close.hide();
						$container.animate({'height':h},function() {
							$container.removeClass('showAll');
							$open.fadeIn();
							$menu.fadeIn();
							api.getConf().keyboard = true;
						});
						return e.preventDefault();
					}).hide();
					$container.append($open,$close);
					$open.fadeIn();
				}

			}
		});	

		// tabs
		var $tab = $s.find('.tabs');
		if ($tab.children('.pane').length) {
			var $m = $('<ul class="tabNavi"></ul>');
			$tab.children('.pane').each(function(){
				var $t = $(this), h = $t.find('h2:first').hide().html();
				if (h != null && h.length) {
					$m.append('<li><a href="#'+$t.attr('id')+'">'+h+'</a></li>');
				}
			});
			$tab.wrapInner('<div class="tabContent"></div>');
			$tab.find('.tabContent').append('<span class="clearFix"></span>');
			$tab.prepend($m);
			api = $m.tabs($m.next().children('.pane'),{effect:'fade',api:true,
				onClick: function(e,i) {
					var p = api.getCurrentPane(), i = $(p).find('.tx-wecmap-map').attr('id'), m = mark = null;
					if (i != null && typeof(WecMap) != null) {
						mark = WecMap.markers[i][0][0];
						m = WecMap.get(i);
						m.checkResize();
						m.setCenter(mark.getLatLng());
						GEvent.trigger(mark,'click');
					}
					return true;
				}
			});
		}

		// accordeon
		$s.find('.accordeon').each(function() {
			var $t = $(this).addClass('jsEnhanced');
			$t.children('h3:first').addClass('current');
			$t.children('.pane:first').css('display','block');
			$t.tabs($t.children('.pane'), {tabs: 'h3', effect: 'slide', initialIndex: null});
		});

		// lightbox
		if($s.find('a[rel*=lightbox]').length) {
			var $lB = $('<div id="lightbox"><div class="image"><div class="navItems"><a class="prev" title="'+$.enet.l18n('showPrevImage')+'"><strong><dfn title="'+$.enet.l18n('showPrevImage')+'">&lt</dfn></strong></a><a class="next" title="'+$.enet.l18n('showNextImage')+'"><strong><dfn title="'+$.enet.l18n('showNextImage')+'">&gt;</dfn></strong></a></div></div><div class="info"></div><div class="loader"></div></div>').hide().append($closeButton).hide().appendTo('body');
			$s.find('a[rel*=lightbox]').overlay({
				target: '#lightbox',
				expose: {color:'#333', zIndex:9999},
				oneInstance: false
			}).gallery({
				speed:800,
				opacity: null,
				minWidth: 200,
				autohide: false,
				template: '<div class="description">${title}</div><span class="imageCount">'+$.enet.l18n('image')+' ${index} '+$.enet.l18n('of')+' ${total}</span>',
				useAsTitle: '(el.attr(\'name\') && $(\'#\'+el.attr(\'name\')).length) ? $(\'#\'+el.attr(\'name\')).html() : el.children(\'img\').attr(\'title\')'
			});
		};

		// faq
		$s.find('.faq').each(function() {
			var $t = $(this).addClass('faqJsEnhanced');
			$t.children('.pane').hide();
			$t.children('h3').click(function() {
				var $b = $(this), $p = $b.next('.pane');
				if ($p.length) {
					$p.slideToggle(function(){
						$b.attr('class','').addClass($p.css('display') == 'block' ? 'toggle-close' : 'toggle-open');
					});
				}
			});
		});

		// search forms
		$s.find('.searchForm').each( function() {
			var sf = $(this).find('input.searchField'),
				dt = sf.val();
			if(dt != '' && dt != undefined && !sf.hasClass('dontEnhance')) {
				$(this).submit(function() {
					if(sf.val() != dt || (sf.hasClass('matchTitle') && sf.attr('title') != sf.val())) {
						return true;	
					}
					return false;
				});
				sf.focus(function() {
					if($(this).val() == dt) {
						$(this).val('');					
					}
				})
				.blur(function() {
					if($(this).val() == '') {
						$(this).val(dt);	
					}
				});
			}
		});	

		// equal height of multicolumn FCEs
		$s.find('div.multicolumn').each(function(){
			var $fceCol = $(this), h = $fceCol.innerHeight();
			if ($fceCol.children('[class*=framed]').length) {
				$fceCol.children('div').css('height',h);
			}
		});
		
		// fix layout of multistep lists in IE
		$s.find('ol.steps').each(function() {
			var $t = $(this);
			$t.children().each(function(i) {
				$(this).css({'z-index':(i*-1), 'position':'relative', 'zoom':1});	
			});
		});
		
		// form validation
		$s.find('form.mailForm').submit( function() {
			return $.enet.validateForm(this, false);	
		});
	}

	// form validation
	$.enet.validateForm = function(form,inlineValidation) {
		var $form = $(form),
			$validateFields = $form.find(".f-required, *[class*='eval-']"),
			errors = new Array();
		$('#overlay').hide().remove();

		//remove existing error messages from serverside validation
		$form.find('.validationMessage, #formValidationErrorMessage').remove();
		$form.find('.validationError').removeClass('validationError');
		
		function addError($field,msg) {
			var label = $('label[for='+$field.attr('id')+']').html() || '';
			msg = msg.replace('${label}',label);
			errors.push(Array($field,msg));
			if(typeof(inlineValidation) != 'undefined' && inlineValidation) {
				if($field.parent().find('.validationMessage').length) {
					$field.parent().find('.validationMessage').append('<br />'+msg);
				} else {
					$field.parent().append('<span class="validationMessage">'+msg+'</span>');	
				}
			}
		}
		
		// if fields got marked as required or require validation set via a special CSS class, proccess those for validation rules.
		if($validateFields.length) {
			$validateFields.each(function() {
				var $field = $(this), msg = $field.attr('title'), val = $field.val(), type = $field.attr('type');
				//$field.removeClass('validationError');
				switch (type) {
					default:
						if(!val && $field.hasClass('f-required')) {
							if (msg == null || typeof(msg) == 'undefined' || msg.length == 0) { msg = $.enet.l18n('evalMsgFillRequiredFields') }
							addError($field,msg);
						} else if(val) {
							if($field.hasClass('eval-email') && !val.match(/^[-!#$%&\`*+\.\/0-9=?A-Z^_´a-z{|}~]+@[-!#$%&\`*+\.\/0-9=?A-Z^_´a-z{|}~]+\.[A-Za-z]{2,4}$/)) {
								addError($field,$.enet.l18n('evalMsgValidEmail'));
							}
							if($field.hasClass('eval-integer') && isNaN(val)) {
								addError($field,$.enet.l18n('evalMsgInteger'));
							}
							if($field.hasClass('eval-quantity') && !val.match(/^[1-9][0-9]*$/)) {
								addError($field,$.enet.l18n('evalMsgValidQuantity'));
							}
							if($field.hasClass('eval-repeat')) {
								var $repeat = $('#'+$field.attr('id')+'-repeat');
								if(val && val != $repeat.val()) {
									addError($repeat,$.enet.l18n('evalMsgRepeat'));
								}
							}
						}
						break;
					case 'checkbox':
					case 'radio':
						if(type == 'checkbox' && !$field.attr('class').match(' *eval-.*') && !$field.attr('checked') && $field.hasClass('f-required')) {
							errors.push(Array($field,msg));
						}

						// evaluation
						if($field.hasClass('eval-atLeastOne')) {
							var na = $field.attr('name'), l = Math.round(na.length -2), n = na.substr(0,l);
							if(! $form.find('[name^="'+n+'"]:checked').length ) {
									errors.push(Array($field,msg));
							}
						}
						break;
				}
			});
			if(errors.length) {
				var msg = '',
					items='',
					focused = false,
					offset = $form.offset(),
					msgCache = new Array();
				$(errors).each(function() {
					$(this[0]).parent().addClass('validationError');
					if(!focused) {
						this[0].focus();
						focused = true;
					}
					if($.inArray(this[1],msgCache) == -1) {
						msgCache.push(this[1]);
						items += '<li>'+this[1]+'</li>';
					}
				});
				msg = '<ul>'+items+'</ul>';
				return $.enet.displayError($.enet.l18n('attention'),msg,{offset:offset.top});
			}
		}
		return true;
	}

	$.enet.displayError = function(headline,message){
		var $messageContainer = $('<div class="infoMessage layout-error" id="errorMessage"></div>');
		$('body').append($messageContainer);
		$messageContainer.html('<h3>'+headline+'</h3>'+message).hide().overlay({
			api:true,
			expose:'#333',
			onLoad: function() {$messageContainer.fadeIn()},
			onBeforeClose: function() {$messageContainer.fadeOut()},
			onClose:function() {$messageContainer.remove()}
		}).load();
		return false;
	}


/**************
* ENRICH USEREXPERIENCE
***************/
	// add extra functionality to the content
	$.enet.enrichContent('body');


	// call methods in onJQueryReady stack. The stack get's filled from inline JS or some other external scripts
	if(typeof(onJQueryReady) == 'object') {
		$(onJQueryReady).each(function() {
			this.fn.call(this.p);
		});
	}
})(jQuery);
