jQuery(document).ready(function() {
    
	jQuery("#productsOverview .product").click(function(){
		var url = jQuery(this).find("a").attr("href");
		window.location.href = url;
	});
	
	var fadingSpeed = 250;
	var visible = 0.75;
	var invisible = 0;
	
	jQuery("#productsOverview .product").mouseenter(function(){
		var highlight = jQuery(this).find(".highlight");
		jQuery(this).parent().parent().find(".highlight.act").removeClass("act");
		jQuery(this).parent().parent().find(".highlight.act").fadeTo(fadingSpeed, visible);
		highlight.stop(true,true).addClass("act");
		highlight.stop(true,true).fadeTo(fadingSpeed, invisible);
		jQuery(this).parent().parent().find(".highlight:not(.act)").stop(true,true).fadeTo(fadingSpeed, visible);
	});
	
	jQuery("#productsOverview").mouseleave(function(){
		jQuery("#productsOverview").find(".highlight").stop(true,true).fadeTo(fadingSpeed, invisible);
	});
	
});   
/* jQuery Carousel 0.9.1
   Copyright 2008-2009 Thomas Lanciaux and Pierre Bertet.
   This software is licensed under the CC-GNU LGPL <http://creativecommons.org/licenses/LGPL/2.1/>
*/
;(function($){
	
	$.fn.carousel = function(params){
		
		var params = $.extend({
			direction: "horizontal",
			loop: false,
			dispItems: 1,
			pagination: false,
			paginationPosition: "inside",
			nextBtn: '<span>Next</span>',
			prevBtn: '<span>Previous</span>',
			btnsPosition: "inside",
			nextBtnInsert: "appendTo",
			prevBtnInsert: "prependTo",
			nextBtnInsertFn: false,
			prevBtnInsertFn: false,
			autoSlide: false,
			autoSlideInterval: 3000,
			delayAutoSlide: false,
			combinedClasses: false,
			effect: "slide",
			slideEasing: "swing",
			animSpeed: "normal",
			equalWidths: "true",
			callback: function(){},
			useAddress: false,
			adressIdentifier: "carousel"
		}, params);
		
		// Buttons position
		if (params.btnsPosition == "outside"){
			params.prevBtnInsert = "insertBefore";
			params.nextBtnInsert = "insertAfter";
		}
		
		// Slide delay
		params.delayAutoSlide = params.delayAutoSlide || params.autoSlideInterval;
		
		return this.each(function(){
			
			// Env object
			var env = {
				$elts: {},
				params: params,
				launchOnLoad: []
			};
			
			// Carousel main container
			env.$elts.carousel = $(this).addClass("js");
			
			// Carousel content
			env.$elts.content = $(this).children().css({position: "absolute", "top": 0});
			
			// Content wrapper
			env.$elts.wrap = env.$elts.content.wrap('<div class="carousel-wrap"></div>').parent().css({"overflow-x": "hidden", position: "relative"});
			
			// env.steps object
			env.steps = {
				first: 0, // First step
				count: env.$elts.content.children().length // Items count
			};
			
			// Last visible step
			env.steps.last = env.steps.count - 1;
			
			// Prev Button
			if ($.isFunction(env.params.prevBtnInsertFn)) {
				env.$elts.prevBtn = env.params.prevBtnInsertFn(env.$elts);
				
			} else { 
				env.$elts.prevBtn = $(params.prevBtn)[params.prevBtnInsert](env.$elts.carousel);
			}
			
			// Next Button
			if ($.isFunction(env.params.nextBtnInsertFn)) {
				env.$elts.nextBtn = env.params.nextBtnInsertFn(env.$elts);
				
			} else {
				env.$elts.nextBtn = $(params.nextBtn)[params.nextBtnInsert](env.$elts.carousel);
			}
			
			// Add buttons classes / data
			env.$elts.nextBtn.addClass("carousel-control next carousel-next");
			env.$elts.prevBtn.addClass("carousel-control previous carousel-previous");
			
			// Bind events on next / prev buttons
			initButtonsEvents(env);
			
			// Pagination
			if (env.params.pagination) {
				initPagination(env);
			}
			
			// Address plugin
			initAddress(env);
			
			// On document load...
			$(function(){
				
				// First item
				var $firstItem = env.$elts.content.children(":first");
				
				// Width 1/3 : Get default item width
				env.itemWidth = $firstItem.outerWidth();
				
				// Width 2/3 : Define content width
				if (params.direction == "vertical"){
					env.contentWidth = env.itemWidth;
					
				} else {
					
					if (params.equalWidths) {
						env.contentWidth = env.itemWidth * env.steps.count;
						
					} else {
						env.contentWidth = (function(){
								var totalWidth = 0;
								
								env.$elts.content.children().each(function(){
									totalWidth += $(this).outerWidth();
								});
								
								return totalWidth;
							})();
					}
				}
				
				// Width 3/3 : Set content width to container
				env.$elts.content.width( env.contentWidth );
				
				// Height 1/2 : Get default item height
				env.itemHeight = $firstItem.outerHeight();
				
				// Height 2/2 : Set content height to container
				if (params.direction == "vertical"){
					env.$elts.content.css({height:env.itemHeight * env.steps.count + "px"});
					env.$elts.content.parent().css({height:env.itemHeight * env.params.dispItems + "px"});
					
				} else {
					env.$elts.content.parent().css({height:env.itemHeight + "px"});
				}
				
				setButtonHeight(env);
				setFadeHeight(env);
				
				// Update Next / Prev buttons state
				updateButtonsState(env);
				
				// Launch function added to "document ready" event
				$.each(env.launchOnLoad, function(i,fn){
					fn();
				});
				
				// Launch autoslide
				if (env.params.autoSlide){
					window.setTimeout(function(){
						env.autoSlideInterval = window.setInterval(function(){
							goToStep( env, getRelativeStep(env, "next") );
						}, env.params.autoSlideInterval);
					}, env.params.delayAutoSlide);
				}
				
			});
			
		});
		
	};
	
	// Next / Prev buttons events only
	function initButtonsEvents(env){
		
		env.$elts.nextBtn.add(env.$elts.prevBtn)
			
			.bind("enable", function(){
				
				var $this = $(this)
					.unbind("click")
					.bind("click", function(){
						goToStep( env, getRelativeStep(env, ($this.is(".next")? "next" : "prev" )) );
						stopAutoSlide(env);
					})
					.removeClass("disabled");
				
				// Combined classes (IE6 compatibility)
				if (env.params.combinedClasses) {
					$this.removeClass("next-disabled previous-disabled");
				}
			})
			.bind("disable", function(){
				
				var $this = $(this).unbind("click").addClass("disabled");
				
				// Combined classes (IE6 compatibility)
				if (env.params.combinedClasses) {
					
					if ($this.is(".next")) {
						$this.addClass("next-disabled");
						
					} else if ($this.is(".previous")) {
						$this.addClass("previous-disabled");
						
					}
				}
			})
			.hover(function(){
				$(this).toggleClass("hover");
			});
	};
	
	// Pagination
	function initPagination(env){
		env.$elts.pagination = $('<div class="center-wrap"><div class="carousel-pagination"><p></p></div></div>')[((env.params.paginationPosition == "outside")? "insertAfter" : "appendTo")](env.$elts.carousel).find("p");
		
		env.$elts.paginationBtns = $([]);
		
		env.$elts.content.find("li").each(function(i){
			if (i % env.params.dispItems == 0) {
				env.$elts.paginationBtns = env.$elts.paginationBtns.add( $('<a><span>'+( env.$elts.paginationBtns.length + 1 )+'</span></a>').data("firstStep", i) );
			}
		});
	
		env.$elts.pagination.append(env.$elts.paginationBtns);
		
		env.$elts.paginationBtns.slice(0,1).addClass("active");
		
		// Events
		env.launchOnLoad.push(function(){
			env.$elts.paginationBtns.click(function(e){
				goToStep( env, $(this).data("firstStep") );
				stopAutoSlide(env);
			});
		});
	};
	
	// Address plugin
	function initAddress(env) {
		
		if (env.params.useAddress && $.isFunction($.fn.address)) {
			
			$.address
				.init(function(e) {
					var pathNames = $.address.pathNames();
					if (pathNames[0] === env.params.adressIdentifier && !!pathNames[1]) {
						goToStep(env, pathNames[1]-1);
					} else {
						$.address.value('/'+ env.params.adressIdentifier +'/1');
					}
				})
				.change(function(e) {
					var pathNames = $.address.pathNames();
					if (pathNames[0] === env.params.adressIdentifier && !!pathNames[1]) {
						goToStep(env, pathNames[1]-1);
					}
				});
		} else {
			env.params.useAddress = false;
		}
	};
	
	function goToStep(env, step) {
		
		// Callback
		env.params.callback(step);
		
		// Launch animation
		transition(env, step);
		
		// Update first step
		env.steps.first = step;
		
		// Update buttons status
		updateButtonsState(env);
		
		// Update address (jQuery Address plugin)
		if ( env.params.useAddress ) {
			$.address.value('/'+ env.params.adressIdentifier +'/' + (step + 1));
		}
		
	};
	
	// Get next/prev step, useful for autoSlide
	function getRelativeStep(env, position) {
		if (position == "prev") {
			if ( (env.steps.first - env.params.dispItems) >= 0 ) {
				return env.steps.first - env.params.dispItems;
				
			} else {
				return ( (env.params.loop)? (env.steps.count - env.params.dispItems) : false );
			}
			
		} else if (position == "next") {
			
			if ( (env.steps.first + env.params.dispItems) < env.steps.count ) {
				return env.steps.first + env.params.dispItems;
				
			} else {
				return ( (env.params.loop)? 0 : false );
			}
		}
	};
	
	// Animation
	function transition(env, step) {
		
		// Effect
		switch (env.params.effect){
			
			// No effect
			case "no":
				if (env.params.direction == "vertical"){
					env.$elts.content.css("top", -(env.itemHeight * step) + "px");
				} else {
					env.$elts.content.css("left", -(env.itemWidth * step) + "px");
				}
				break;
			
			// Fade effect
			case "fade":
				if (env.params.direction == "vertical"){
					env.$elts.content.hide().css("top", -(env.itemHeight * step) + "px").fadeIn(env.params.animSpeed);
				} else {
					env.$elts.content.hide().css("left", -(env.itemWidth * step) + "px").fadeIn(env.params.animSpeed);
				}
				break;
			
			// Slide effect
			default:
				if (env.params.direction == "vertical"){
					env.$elts.content.stop().animate({
						top : -(env.itemHeight * step) + "px"
					}, env.params.animSpeed, env.params.slideEasing);
				} else {
					env.$elts.content.stop().animate({
						left : -(env.itemWidth * step) + "px"
					}, env.params.animSpeed, env.params.slideEasing);
				}
				break;
		}
		
	};
	
	// Update all buttons state : disabled or not
	function updateButtonsState(env){
		
		if (getRelativeStep(env, "prev") !== false) {
			env.$elts.prevBtn.trigger("enable");
			
		} else {
			env.$elts.prevBtn.trigger("disable");
		}
		
		if (getRelativeStep(env, "next") !== false) {
			env.$elts.nextBtn.trigger("enable");
			
		} else {
			env.$elts.nextBtn.trigger("disable");
		}
		
		if (env.params.pagination){
			env.$elts.paginationBtns.removeClass("active")
			.filter(function(){ return ($(this).data("firstStep") == env.steps.first) }).addClass("active");
		}
	};
	
	function setButtonHeight(env){
		env.$elts.prevBtn.css('top' , (env.$elts.content.height() / 2) - (env.$elts.prevBtn.height() / 2) );
		env.$elts.nextBtn.css('top' , (env.$elts.content.height() / 2) - (env.$elts.nextBtn.height() / 2) );
	}
	
	function setFadeHeight(env){
		$('.carousel_fade').each(function(i, el){
			$(el).css('height' , env.$elts.content.height() );
		});
	}
	
	// Stop autoslide
	function stopAutoSlide(env) {
		if (!!env.autoSlideInterval){
			window.clearInterval(env.autoSlideInterval);
		}
	};
	
})(jQuery);
(function ($) {
	$(function() {
	
		var carousel_mc = '#carousel_home',
			defaults = {
				 dispItems	: 2,
				 pagination	: true,
				 loop		: true
			},
			getScrollItems = function (mc) {
				var items = defaults.dispItems;
				
				if ($(mc + '.one').length) {
					items = 1;
				} else if ($(mc + '.two').length) {
					items = 2;
				} else if ($(mc + '.three').length) {
					items = 3;
				}
				
				return items;
			},
		
		$carousel_mc = $(carousel_mc);
		
		// Prevents duplicate instantiation
		if ($.fn.carousel && $carousel_mc.length && !$carousel_mc.data('hasCarousel') && !$('.carousel-wrap', carousel_mc).length) {	
			$carousel_mc
				.data('hasCarousel', true)
				.carousel($.extend({}, defaults, {dispItems: getScrollItems(carousel_mc)}));
		}
		
		// check if cached fancybox plugin is loaded and add carousel-check to onComplete-Stack
		if ($.cachedAjaxLightbox) {
			$.cachedAjaxLightbox.addOnComplete(function ($content) {
				var $lightboxCarousel = $content.find(carousel_mc);
				
				// Prevents duplicate instantiation
				if ($.fn.carousel && $lightboxCarousel.length && !$lightboxCarousel.data('hasCarousel') && !$('.carousel-wrap', carousel_mc).length) {
					$(carousel_mc, $content)
						.data('hasCarousel', true)
						.carousel($.extend({}, defaults, {dispItems: getScrollItems(carousel_mc)}));
				}
			});
		}
	});

}(jQuery));
var jQuerySmaAccordionMenu = {
    init: function() {
	jQuery(document).ready(function() {
		var AccordionContainer = jQuery(".jquery-sma-accordion-menu");
		
	    activeLevel = AccordionContainer.find(".activeLevel");
	    if ( activeLevel.length == 1 ) {
	    	activeLevelParentParent = activeLevel.parent().parent();
	    	activeLevelParentParent.find(".close:first").addClass('close_active');
	    	activeLevelParentParent.find(".bottom:first").addClass('bottom_active');	    	
	    } else {
	    	activeLevel = 0
	    	AccordionContainer.find(".close:first").addClass('close_active');
	    	AccordionContainer.find(".bottom:first").addClass('bottom_active');
	    }
	    
	    AccordionContainer.accordion({
	    active: activeLevel,
		header: '.toggler',
		event: 'mouseover',
		selectedClass: 'bottom_active',
		changestart: function(event, ui) {
		    ui.newContent.parent().next().addClass('close_active');
		    ui.newContent.parent().addClass('bottom_active');
		    ui.oldContent.parent().next().removeClass('close_active');
		    ui.oldContent.parent().removeClass('bottom_active');
		},

		change: function(event, ui) {

		}
	    });
	    
	    /*
	    // IE Fix:
	    // make sure that the accordion container have a constant height
	    // to avoid flickering elements below the accordion 
	    */
	    
	    // get the computed height 
	    var constantHeight = AccordionContainer.height();
	    // add the computed height as height via inline styles
	   	AccordionContainer.css("height", constantHeight);
	    jQuery("div:first-child", AccordionContainer).css("height", "auto");
	});
    }
}

jQuery(document).ready(function() {
	jQuerySmaAccordionMenu.init();
});
/**
 * Console fix
 */
if (!window.console) {
	window.console = {
		log		: function (event) {},
		info	: function (event) {},
		warn	: function (event) {},
		error	: function (event) {}
	}
}

(function ($) { 
	$(function () {
	});
}(jQuery));
/*
 * In-Field Label jQuery Plugin
 * https://github.com/davist11/In-Field-Labels-jQuery-Plugin
 *
 * Copyright (c) 2009 Doug Neiner
 * Dual licensed under the MIT and GPL licenses.
 * Uses the same license as jQuery, see:
 * http://docs.jquery.com/License
 *
 * @version 0.1
 */
(function($){
	
    $.InFieldLabels = function(label,field, options){
        // To avoid scope issues, use 'base' instead of 'this'
        // to reference this class from internal events and functions.
        var base = this;
        
        // Access to jQuery and DOM versions of each element
        base.$label = $(label);
        //base.label = label;

 		base.$field = $(field);
		//base.field = field;
        
		base.$label.data("InFieldLabels", base);
		base.showing = true;
        
        base.init = function(){
			// Merge supplied options with default options
            base.options = $.extend({},$.InFieldLabels.defaultOptions, options);
            
            base.$label.css('position','absolute');
            // var fieldPosition = base.$field.position();
            base.$label.css({
                /*
                * I dont like to use inline-styles for that.
                * So I positioned the labels via external css.
                * See above und below. 
                */
                // 'left' : fieldPosition.left,
                // 'top' : fieldPosition.top
            }).addClass(base.options.labelClass);

			// Check if the field is already filled in
			if(base.$field.val() != ""){
				base.$label.hide();
				base.showing = false;
			};
			
			base.$field.focus(function(){
				base.fadeOnFocus();
			}).blur(function(){
				base.checkForEmpty(true);
			}).bind('keydown.infieldlabel',function(e){
				// Use of a namespace (.infieldlabel) allows us to
				// unbind just this method later
				base.hideOnChange(e);
			}).change(function(e){
				base.checkForEmpty();
			}).bind('onPropertyChange', function(){
				base.checkForEmpty();
			});
        };

		// If the label is currently showing
		// then fade it down to the amount
		// specified in the settings
		base.fadeOnFocus = function(){
			if(base.showing){
				base.setOpacity(base.options.fadeOpacity);
			};
		};
		
		base.setOpacity = function(opacity){
			base.$label.stop().animate({ opacity: opacity }, base.options.fadeDuration);
			base.showing = (opacity > 0.0);
		};
		
		// Checks for empty as a fail safe
		// set blur to true when passing from
		// the blur event
		base.checkForEmpty = function(blur){
			if(base.$field.val() == ""){
				base.prepForShow();
				base.setOpacity( blur ? 1.0 : base.options.fadeOpacity );
			} else {
				base.setOpacity(0.0);
			};
		};
		
		base.prepForShow = function(e){
			if(!base.showing) {
				// Prepare for a animate in...
				base.$label.css({opacity: 0.0}).show();
				
				// Reattach the keydown event
				base.$field.bind('keydown.infieldlabel',function(e){
					base.hideOnChange(e);
				});
			};
		};

		base.hideOnChange = function(e){
			if(
				(e.keyCode == 16) || // Skip Shift
				(e.keyCode == 9) // Skip Tab
			  ) return; 
			
			if(base.showing){
				base.$label.hide();
				base.showing = false;
			};
			
			// Remove keydown event to save on CPU processing
			base.$field.unbind('keydown.infieldlabel');
		};
      
		// Run the initialization method
        base.init();
    };
	
    $.InFieldLabels.defaultOptions = {
        fadeOpacity: 0.5, // Once a field has focus, how transparent should the label be
		fadeDuration: 300, // How long should it take to animate from 1.0 opacity to the fadeOpacity
		labelClass: 'infield' // Class to be applied to label when positioned over form field
    };
	

    $.fn.inFieldLabels = function(options){
        return this.each(function(){
			// Find input or textarea based on for= attribute
			// The for attribute on the label must contain the ID
			// of the input or textarea element
			var for_attr = $(this).attr('for');
			if( !for_attr ) return; // Nothing to attach, since the for field wasn't used
			
			
			// Find the referenced input or textarea element
			var $field = $(
				"input#" + for_attr + "[type='text']," + 
				"input#" + for_attr + "[type='password']," + 
				"textarea#" + for_attr
				);
				
			if( $field.length == 0) return; // Again, nothing to attach
			
			// Only create object for input[text], input[password], or textarea
            (new $.InFieldLabels(this, $field[0], options));
        });
    };
	
})(jQuery);
// jQuery wrapper 
(function ($) {
	// DOM ready
	$(function () {
		$("#loginForm label").inFieldLabels();
	});
}(jQuery));
// jQuery wrapper 
(function ($) {
	// DOM ready
	$(function () {
		var	$table = $('table.simpleTable.fullRowLinks').addClass('js'),
			$tr;
	
		$tr = $('thead', $table).length ? $('tbody tr:has(a)', $table) : $('tr:has(a)', $table); // exclude the tablerows in thead

		$tr.bind('click.simpleTable', function(){
			var url = $(this).find("a").attr("href");
			window.location.href = url;
		});
		
		$tr.bind("mouseenter.simpleTable mouseleave.simpleTable", function(){
			$(this).toggleClass("hover");
		});
		
	});
}(jQuery));
(function ($) { 
	$(function () {
	});
}(jQuery));
// jQuery wrapper 
(function ($) {
	// DOM ready
	$(function () {
		var	$messageBox = $("div.messageBox").addClass("js");
		/*
		* Begin: Deleting message box
		*/
		$('.close', $messageBox).bind('click.messageBox', function(event) {
			event.preventDefault();
			$(this).parent().fadeOut();
//			$(this).parent().slideUp('fast');
		});
		
		/*
		* End: Deleting message box
		*/
	});
}(jQuery));
/*
 * jQuery UI Position 1.8.11
 *
 * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
 * Dual licensed under the MIT or GPL Version 2 licenses.
 * http://jquery.org/license
 *
 * http://docs.jquery.com/UI/Position
 */
(function(c){c.ui=c.ui||{};var n=/left|center|right/,o=/top|center|bottom/,t=c.fn.position,u=c.fn.offset;c.fn.position=function(b){if(!b||!b.of)return t.apply(this,arguments);b=c.extend({},b);var a=c(b.of),d=a[0],g=(b.collision||"flip").split(" "),e=b.offset?b.offset.split(" "):[0,0],h,k,j;if(d.nodeType===9){h=a.width();k=a.height();j={top:0,left:0}}else if(d.setTimeout){h=a.width();k=a.height();j={top:a.scrollTop(),left:a.scrollLeft()}}else if(d.preventDefault){b.at="left top";h=k=0;j={top:b.of.pageY,
left:b.of.pageX}}else{h=a.outerWidth();k=a.outerHeight();j=a.offset()}c.each(["my","at"],function(){var f=(b[this]||"").split(" ");if(f.length===1)f=n.test(f[0])?f.concat(["center"]):o.test(f[0])?["center"].concat(f):["center","center"];f[0]=n.test(f[0])?f[0]:"center";f[1]=o.test(f[1])?f[1]:"center";b[this]=f});if(g.length===1)g[1]=g[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(b.at[0]==="right")j.left+=h;else if(b.at[0]==="center")j.left+=h/2;if(b.at[1]==="bottom")j.top+=
k;else if(b.at[1]==="center")j.top+=k/2;j.left+=e[0];j.top+=e[1];return this.each(function(){var f=c(this),l=f.outerWidth(),m=f.outerHeight(),p=parseInt(c.curCSS(this,"marginLeft",true))||0,q=parseInt(c.curCSS(this,"marginTop",true))||0,v=l+p+(parseInt(c.curCSS(this,"marginRight",true))||0),w=m+q+(parseInt(c.curCSS(this,"marginBottom",true))||0),i=c.extend({},j),r;if(b.my[0]==="right")i.left-=l;else if(b.my[0]==="center")i.left-=l/2;if(b.my[1]==="bottom")i.top-=m;else if(b.my[1]==="center")i.top-=
m/2;i.left=Math.round(i.left);i.top=Math.round(i.top);r={left:i.left-p,top:i.top-q};c.each(["left","top"],function(s,x){c.ui.position[g[s]]&&c.ui.position[g[s]][x](i,{targetWidth:h,targetHeight:k,elemWidth:l,elemHeight:m,collisionPosition:r,collisionWidth:v,collisionHeight:w,offset:e,my:b.my,at:b.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(i,{using:b.using}))})};c.ui.position={fit:{left:function(b,a){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();b.left=
d>0?b.left-d:Math.max(b.left-a.collisionPosition.left,b.left)},top:function(b,a){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();b.top=d>0?b.top-d:Math.max(b.top-a.collisionPosition.top,b.top)}},flip:{left:function(b,a){if(a.at[0]!=="center"){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();var g=a.my[0]==="left"?-a.elemWidth:a.my[0]==="right"?a.elemWidth:0,e=a.at[0]==="left"?a.targetWidth:-a.targetWidth,h=-2*a.offset[0];b.left+=
a.collisionPosition.left<0?g+e+h:d>0?g+e+h:0}},top:function(b,a){if(a.at[1]!=="center"){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();var g=a.my[1]==="top"?-a.elemHeight:a.my[1]==="bottom"?a.elemHeight:0,e=a.at[1]==="top"?a.targetHeight:-a.targetHeight,h=-2*a.offset[1];b.top+=a.collisionPosition.top<0?g+e+h:d>0?g+e+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(b,a){if(/static/.test(c.curCSS(b,"position")))b.style.position="relative";var d=c(b),
g=d.offset(),e=parseInt(c.curCSS(b,"top",true),10)||0,h=parseInt(c.curCSS(b,"left",true),10)||0;g={top:a.top-g.top+e,left:a.left-g.left+h};"using"in a?a.using.call(b,g):d.css(g)};c.fn.offset=function(b){var a=this[0];if(!a||!a.ownerDocument)return null;if(b)return this.each(function(){c.offset.setOffset(this,b)});return u.call(this)}}})(jQuery);
 
 /*
 * TipTip
 * Copyright 2010 Drew Wilson
 * www.drewwilson.com
 * code.drewwilson.com/entry/tiptip-jquery-plugin
 *
 * Version 1.3   -   Updated: Mar. 23, 2010
 *
 * This Plug-In will create a custom tooltip to replace the default
 * browser tooltip. It is extremely lightweight and very smart in
 * that it detects the edges of the browser window and will make sure
 * the tooltip stays within the current window size. As a result the
 * tooltip will adjust itself to be displayed above, below, to the left 
 * or to the right depending on what is necessary to stay within the
 * browser window. It is completely customizable as well via CSS.
 *
 * This TipTip jQuery plug-in is dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 */

(function ($) {
	var idCount = 0,
		timeout = [],
		namespace = 'tiptip',
		opposites = {
			left	: 'right',
			right	: 'left',
			top		: 'bottom',
			bottom	: 'top',
			center	: 'center'
		},
		xClasses = ['left', 'center', 'right'],
		yClasses = ['top', 'center', 'bottom'],
		defaultPosition = {
			my		: 'bottom center',
			at		: 'top center'
		};
	
	$.fn.tipTip = function (method) {
	
		var defaults = { 
				activation: 'hover',
				keepAlive: false,
				maxWidth: '200px',
				edgeOffset: '0 5',
				delay: 400,
				fadeIn: 200,
				fadeOut: 200,
				attribute: 'title',
				content: false, // HTML or String to fill TipTIp with
			  	enter: function () {},
			  	exit: function () {}
		  	},
	 	opts = $.extend({}, defaults, method),
	 	
	 	self = this,
	 	
	 	/**
	 	 * Returns the event name with the corresponding namespace
	 	 *
	 	 * @param String event name
	 	 *
	 	 * @return String namespaced event name
	 	 */
	 	namespacedEvent = function (name) {
	 		return name + '.' + namespace;
	 	},
	 	
	 	/**
	 	 * Converts the String into the equivalent Object
	 	 *
	 	 * @param String position
	 	 *
	 	 * @return Object
	 	 */
	 	normalizePosition = function(pos) {
	 		var position = defaultPosition;
	 		
	 		if (typeof pos !== 'string') {
	 			pos = '';
	 		}
	 		
	 		pos = pos.replace('center', '');
	 		pos = $.trim(pos);
	 		pos = pos.split(' ');
	 		
	 		if (pos[1]) {
	 			if (pos[0].search(/left|right/) !== -1) {
	 				position.my = opposites[pos[0]] + ' ' + pos[1];
	 				position.at = pos[0] + ' ' + pos[1];
	 			} else {
	 				position.my = pos[1] + ' ' + opposites[pos[0]];
	 				position.at = pos[1] + ' ' + pos[0];
	 			}
	 		}
	 		else {
		 		position.my = opposites[pos[0]];
		 		position.at = pos[0];
	 		}
	 		
	 		return position;
	 	},
	 	
	 	update_position = function (org_elem, data) {
	 		var position,
	 			tempPosition,
	 			visible = data.tiptip_holder.is(':visible'),
	 			$tip	= data.tiptip_holder
	 						.removeAttr('class')
	 						.removeAttr('style')
	 						.css({
							//	'display'	: visible ? 'block' : 'none',
	 							'max-width' : data.opts.maxWidth
	 						})
	 						.addClass('tiptip_holder'),
	 			$el		= org_elem,
	 			my,
	 			at,
	 			stringPos,
	 			defaults = { 
 					of			: $el,
 					collision	: 'flip flip'
 				},
 				offset = data.opts.edgeOffset || '',
 				tipClass;
 			
 			offset = offset.toString().split(' ');
 			if (offset.length <= 1) {
 				offset = offset.push(offset[0]);
 			}
	 		
	 		if (!data.opts.position) {
	 			position = defaultPosition;	
	 		}
	 		else if (typeof data.opts.position === 'object') {
	 			var tmp;
	 			position = data.opts.position;
	 			
	 			if (!position.at) {
	 				tmp = normalizePosition(data.opts.position);
	 				position.at = tmp.at;
	 			}
	 		}
	 		else if (typeof data.opts.position === 'string') {
	 			stringPos = data.opts.position.split(' ');
	 			
	 			if (stringPos[0].search(/top|bottom|left|right|center/) !== -1) {
 					position = normalizePosition(data.opts.position);
	 			} else {
	 				position = defaultPosition;
	 			}	
	 		} 
	 		else {
	 			console.error('no valid position');
	 			return;
	 		}
	 		
	 		tempPosition = $.extend({}, defaults, position);
	 		tempPosition.of = $el;
	 		
	 		// adjust offset
	 		if (tempPosition.my) {
		 		if (tempPosition.my.search(/bottom/) !== -1) {
		 			offset[1] = parseInt(offset[1], 10) * -1;
	
		 		} else if (tempPosition.my.search(/right/) !== -1) {
		 			offset[0] = parseInt(offset[0], 10) * -1;
		 		}
	 		}
	 		
	 		tipClass = getTipTempClasses(tempPosition);

	 		tempPosition = $.extend({}, tempPosition, {
	 			offset: parseInt(offset[0], 10) + ' ' + parseInt(offset[1], 10)
	 		});
	 			 		
	 		/*$('body').children('div.dummy').remove();
	 		$dummy = $('<div>',{
	 			className: 'dummy'
	 		})
	 		.css({
	 			'position'		: 'absolute',
	 			'background'	: 'red',
	 			'width'			: 150,
	 			'height'		: 10
	 		})
	 		.appendTo('body')
	 		.position(tempPosition);
	 		*/
			
			// update position and add classes after position check (collision-detection)
	 		$tip
		 		.css({
		 			'top'	: 0,
		 			'left'	: 0
		 		})
		 		.addClass(tipClass)
		 		.position(tempPosition)
		 		.removeAttr('class')
		 		.addClass('tiptip_holder')
		 		.addClass(getTipClasses($tip, $el))
		 		.css({
		 			'display': visible ? 'block' : 'none'	
		 		});
	 	},
	 	
	 	/**
	 	 * Calculated the position-dependent classes from the position of the elements.
	 	 *
	 	 * @param Object $tip Tooltip
	 	 * @param Object $el Parent element of the Tooltip
	 	 *
	 	 * @return String Position-dependent classes
	 	 */
	 	getTipClasses = function ($tip, $el) {
	 		var	tp,
		 		tw = $tip.outerWidth(),
		 		th = $tip.outerHeight(),
		 		visible = $tip.is(':visible'),
	 			ep = $el.offset(),
	 			ew = $el.outerWidth(),
	 			eh = $el.outerHeight(),
	 			tx = '',
	 			ty = '',
	 			step,
	 			off,
	 			pos,
	 			h,
	 			v;
	 		
	 		// fix to get current position
	 		tp = $tip.show().offset();
	 		tp = $tip.offset();
	 		
	 		if (!visible) {
	 			$tip.hide();
	 		}
	 		
	 		// horizontal
	 		if (tp.left < ep.left) {
	 			tx = 'left';
	 		} else if (tp.left >= ep.left && tp.left < ep.left + ew) {
	 			tx = 'center';
	 		} else if (tp.left >= ep.left + ew) {
	 			tx = 'right';
	 		}
	 		
	 		// vertical
	 		if (tp.top < ep.top) {
	 			ty = 'top';
	 		} else if (tp.top >= ep.top && tp.top < ep.top + eh) {
	 			ty = 'center';
	 		} else if (tp.top >= ep.top + eh) {
	 			ty = 'bottom';
	 		}
	 		
	 		// check horizontal center direction
	 		if (tx == 'center') {
	 			step = ew / 3;
	 			off = tp.left - ep.left;
	 			pos = Math.round(off / step);
	 			
	 			// arrow center
	 			if (Math.round((ew  - tw) / 2) == off) {
	 				pos = 1;
	 			}
				
	 			h = 'a_' + xClasses[pos];
	 			v = opposites[ty];
	 			
	 			return 'tip_p_' + v + ' ' + h;
	 		}
	 		// check vertical center direction
	 		else if (ty == 'center') {
	 			step = eh / 3;
	 			off = tp.top - ep.top;
	 			pos = Math.round(off / step);
	 			
	 			h = 'a_' + yClasses[pos];
	 			v = opposites[tx];
	 			
	 			return 'tip_p_' + v + ' ' + h;
	 		}
	 		// check if tooltip is wider than the element
	 		else if (ew <= tw) {
	 			tx = 'center';
	 			
	 			step = ew / 3;
	 			off = tp.left - ep.left;
	 			pos = Math.round(off / step);
	 			
	 			pos = pos >= 0 ? pos : 1;
	 			
	 			h = 'a_' + xClasses[pos];
	 			v = opposites[ty];
	 			
	 			return 'tip_p_' + v + ' ' + h;
	 		}
	 		// check corners
	 		else if (tx.search(/left|right/) !== -1 && ty.search(/top|bottom/) !== -1) {
	 			return 'c_' + tx + ' c_' + ty;
	 		}
	 		
	 		return '';
	 	},
	 	
	 	/**
	 	 * Calculated the position-dependent classes from the available options.
	 	 * The position can be changed by the collision detection.
	 	 *
	 	 * @param Object Position-Options from $.fn.position
	 	 *
	 	 * @return String Position-dependent classes 
	 	 */
	 	getTipTempClasses = function (p) {
	 		p.my = p.my != undefined ? p.my : defaultPosition.my;
	 		
	 		var tipClassPrefix = 'tip_',
	 			h_class,
	 			v_class,
	 			h = p.my.split(' ')[0];
	 			v = p.my.split(' ')[1];
	 		
	 		// corners
	 		if ('center' != opposites[h] && opposites[h] != p.at.split(' ')[0] && opposites[v] != p.at.split(' ')[1]) {
	 			return 'tip_p_corner';
	 		}
	 		// left/right
	 		if (h != p.at.split(' ')[0] && h != 'center') {	 			
	 			return 'tip_p_' + h;
	 		} 
	 		// top/bottom
	 		else if (v != p.at.split(' ')[1]) {
	 			return 'tip_p_' + opposites[p.at.split(' ')[1]];
	 		}
	 		
	 		return '';
	 	},
	 	
	 	/**
	 	 * Sets the contents of the tooltip.
	 	 * The content can be passed as a string or using a callback function. 
	 	 * The parameters of the function is the content element.
	 	 *
	 	 * @example
	 	 *	set_content(data, 'new content');
	 	 *
	 	 * @example
	 	 *	set_content(data, function ($content) {
	 	 *		$content.find('h1').html('new title');
	 	 *		return $content.html();
	 	 *	});
	 	 * 
	 	 * @param Object tooltip data of the element
	 	 * @param String/Function content
	 	 */
	 	set_content = function (data, content) {
	 		data.org_title = content;
	 		if (typeof content == 'string') {
	 			data.tiptip_content.html(content);
	 		}
	 		else if ($.isFunction(content)) {
	 			data.tiptip_content.html(content(data.tiptip_content));
	 		}
	 	},
	 		 	
	 	active_tiptip = function(org_elem) {
	 		var data = org_elem.data('tipTip'),
	 			visible = data.tiptip_holder.is(':visible');
	 			
	 		data.opts.enter.call(this);
	 		set_content(data, data.org_title);
	 		
 			update_position(org_elem, data);
 			
 			if (timeout[data.id]) {
 				clearTimeout(timeout[data.id]);
 			}
 			
 			if (visible) {
				data.tiptip_holder
//					.stop(true,true)
					.show();
			}
			else {
 				timeout[data.id] = setTimeout(function() {
					data.tiptip_holder
	//					.stop(true,true)
						.fadeIn(opts.fadeIn);
				}, data.opts.delay);
			}
 		},
 		
 		deactive_tiptip = function(org_elem) {
 			var data = org_elem.data('tipTip');
 			data.opts.exit.call(this);
 			if (timeout[data.id]){ clearTimeout(timeout[data.id]); }
 			data.tiptip_holder.fadeOut(opts.fadeOut);
 		}
	 	
	 	methods = {
		 
		 	init: function () {
			 	
			 	opts.activation = opts.activation.toString().split(' ');
			 	//opts.defaultPosition = opts.defaultPosition.toString().split(' ');
			 	
				return this.each(function () {
				
					var thisIdCount,
						data = $(this).data('tipTip');

					if (data && data.id) {
						data.id = thisIdCount;
					} else {
						thisIdCount = idCount;
						idCount++;
					}
					
					// Setup tip tip elements and render them to the DOM
					if($('.tiptip_holder[rel=' + thisIdCount + ']').length <= 0){
						var tiptip_holder = $('<div class="tiptip_holder" rel="' + thisIdCount + '" style="max-width:'+ opts.maxWidth +';"></div>');
						
						tiptip_holder.data('el' , $(this));
						
						var tiptip_content = $('<div class="tiptip_content"></div>');
						var tiptip_arrow = $('<div class="tiptip_arrow"></div>');
						
						$('body').append(tiptip_holder.html(tiptip_content).prepend(tiptip_arrow.html('<div class="tiptip_arrow_inner"></div>')));
					} else {
						var tiptip_holder = $('.tiptip_holder[rel=' + thisIdCount + ']');
						var tiptip_content = $('.tiptip_content', tiptip_holder);
						var tiptip_arrow = $('.tiptip_arrow', tiptip_holder);
					}
					
					if ($.browser.msie && parseInt($.browser.version,10) < 7) { 
						tiptip_arrow.remove();
					}
					
					var org_elem = $(this);
					
					if(opts.content){
						var org_title = opts.content;
					} else {
						var org_title = org_elem.attr(opts.attribute);
					}
					
					tiptip_holder.hide();
					
					// save data
					org_elem.data('tipTip', {
						tiptip_holder	: tiptip_holder,
						tiptip_content	: tiptip_content,
						tiptip_arrow	: tiptip_arrow,
						org_title		: org_title,
						opts			: opts,
						id				: thisIdCount
					});
					
					if (org_title != '') {
						if (!opts.content) {
							org_elem.removeAttr(opts.attribute); //remove original Attribute
						}
						timeout[thisIdCount] = false;
						
						if ($.inArray('hover', opts.activation) > -1) {
							org_elem
								.bind(namespacedEvent('mouseenter'), function () {
									active_tiptip(org_elem);
								})
								.bind(namespacedEvent('mouseleave'), function () {
									if(!opts.keepAlive && !opts.internalKeepAlive){
										deactive_tiptip(org_elem);
									}
								});

							if (opts.keepAlive) {
								tiptip_holder.hover(function(){}, function(){
									deactive_tiptip(org_elem);
								});
							}
						}
						
						if ($.inArray('focus', opts.activation) > -1) {
							org_elem
								.bind(namespacedEvent('focus'), function () {
									if ($.inArray('hover', opts.activation) > -1) {
										opts.internalKeepAlive = true;
									}
									active_tiptip(org_elem);	
								})
								.bind(namespacedEvent('blur'), function () {
									if ($.inArray('hover', opts.activation) > -1) {
										opts.internalKeepAlive = false;
									}
									deactive_tiptip(org_elem);
								});
						}
						
						if ($.inArray('click', opts.activation) > -1) {
							org_elem
								.bind(namespacedEvent('click'), function () {	
									active_tiptip(org_elem);
									return false;
								})
								.bind(namespacedEvent('mouseleave'), function () {
									if(!opts.keepAlive && !opts.internalKeepAlive){
										deactive_tiptip(org_elem);
									}
								});

							if (opts.keepAlive) {
								tiptip_holder.hover(function () {}, function () {
									deactive_tiptip(org_elem);
								});
							}
						}
					}
				});
			},
			
			close: function () {
				return this.each(function () {
					var $el = $(this);
					deactive_tiptip($el);
				});
			},
			
			open: function () {
				return this.each(function () {
					var $el = $(this);
					active_tiptip($el);
				});
			},
			
			updatePosition: function (position) {
				position = position || false;
				
				return this.each(function () {
					var $this	= $(this),
						data	= $this.data('tipTip');

					if (typeof position === 'string' || typeof data.opts.position === 'string') {
						data.opts.position = position;
					} else {
						data.opts.position = $.extend({}, data.opts.position, position);
					}

					update_position($this, data);
				});
			},
			
			/**
			 * Sets the contents of the tooltip.
			 *
			 * @see set_content()
			 */
			updateContent: function (content) {
				return this.each(function () {
					var $this	= $(this),
						data	= $this.data('tipTip');
					
					set_content(data, content);
				});
			},
			
			destroy: function () {
				return this.each(function () {
					var $el		= $(this);
						data	= $el.data('tipTip');
					
					deactive_tiptip($el);
					
					// wait for fading
					setTimeout(function () {
						data.tiptip_holder.remove();
						$el.removeData('tipTip');
						$el.unbind('.' + namespace);
					}, data.opts.fadeOut + 100);
				});
			}
		};
		
		method = method || {};
		
		if (methods[method]) {
			return methods[method].apply( this, Array.prototype.slice.call( arguments, 1 ));
		}
		else if (typeof method === 'object' || !method) {
			return methods.init.apply(this, arguments);
		}
		else {
			console.error('undefined method %s', method);
		}		
	}
})(jQuery);  	
/** 
 * @fileoverview 
 *
 */ 
(function ($) {
	$(function () {
		/*
		 * Rendering the icons into headlines and move the tooltip markup to the icon
		 */
		var RenderHeadlineIcons = (function () {
			var $header = $('.header.toolTip.icon')
				.each(function(index) {
					var $this = $(this),
						title = $this.attr('title'),
						$icon =  $('<span />', {
							className: 'toolTipIcon toolTip',
							title: title
						});
				    
				    $this
						.append($icon)
						.removeClass('toolTip')
						.removeAttr('title');
				  });
		}());
		/*
		* Configuration of the jQuery plugin TipTip
		* See http://code.drewwilson.com/entry/tiptip-jquery-plugin for details.
		*/
	
		$('.toolTip').tipTip({
			maxWidth	: '222px',
			position	: 'top center',
			edgeOffset	: 0
		});
	});
}(jQuery));
(function ($) {
	
	// add cufon selector
	try {
		$.addCufonSelector(['legend.header'], 'demibold');
	}
	catch (e) {
		console.error(e);
		console.info("To fix this error, verify that the Headlines-Module was loaded before this Module");
	}
	
	$(function () {

		//$.datepicker.setDefaults($.datepicker.regional['de-CH']);

		$form = $('form.hasGrid');

		/*$('.jq-datepicker', $form).datepicker({
			// add fire focusout-event on input. so the validator can check it. 
			onSelect: function (dateText, inst) {
				$(this).trigger('focusout');
			}
		});
		$('.jq-tabs', $form).tabs();
		*/
		
		var defaultIconExpr = new RegExp('(?:ui-icon-).*[a-z]+'),
			primaryIconExpr = new RegExp('(?:ui-icon-primary-).*[a-z]+'),
			secondaryIconExpr = new RegExp('(?:ui-icon-secondary-).*[a-z]+');

		/*$('.jq-button', $form).each(function () {

			// get button options from classes
			var $this = $(this),
				klass = $this.attr('class'),
				defaultIcon = false !== defaultIconExpr.test(klass) ? klass.match(defaultIconExpr).toString() : null,
				primaryIcon = false !== primaryIconExpr.test(klass) ? klass.match(primaryIconExpr).toString() : defaultIcon,
				secondaryIcon = false !== secondaryIconExpr.test(klass) ? klass.match(secondaryIconExpr).toString() : null,
				options = {
					text: $this.hasClass('ui-button-icon-only') ? false : true,
					label: null,
					icons: {
						primary: primaryIcon,
						secondary: secondaryIcon
					}
				};

			$(this).button(options);
		});*/

		/**
		 * Accordion
		 *
		 * @param collapsible true
		 *
		 * focus first input/textarea after open
		 */
		/*$('.jq-accordion', $form)
			.find('.accordion-header').has('span.ui-icon')
				.addClass('has-secondary-icon')
				.end()
			.find('span.ui-icon')
				.addClass('secondary')
				.end()
			.filter(':first')
				.addClass('top')
			.end()
		.end()
		.find('div.accordion-content:last')
			.addClass('bottom')
			.end()
		.accordion({
			autoHeight: false,
//			icons		: false
			collapsible: true,
			change: function (event, ui) {
				$('input.text, textarea', ui.newContent).filter(function (index) {
					if (0 === index && 0 === $(this).val().length) {
						return true;
					}
					else {
						return false;
					}
				}).focus();
			}
		})
		.find('span.ui-icon:not(.secondary)')
			.addClass('primary');
		*/

		/**
		 * Form Validation
		 *
		 * @see: https://svn.sma.de/projects/html-dummies/wiki/SmaValidate
		 * 
		 * @to-do: http://jquery-ui.googlecode.com/svn/branches/labs/tooltip-callout/index.html
		 */
		$form.smaValidate({debug: true});
		
		/*if ($.fn.helpTooltip) {
			$('.hasHelp').helpTooltip();
		}*/
	});
}(jQuery));
(function ($) {
	
	/**
	 * jQuery-Focus Selector
	 *
	 * <a href="http://stackoverflow.com/questions/2683742/is-there-a-has-focus-in-javascript-or-jquery/2683838#2683838">Source</a>
	 *
	 * @example if ($(selector).is(':focus')) { ... }
	 * @example $('input:focus').doStuff();	
	 */
	$.extend(jQuery.expr[':'], {
		focus: function (e) {
			try {
				return e === document.activeElement;
			}
			catch (err) {
				return false;
			}
		}
	});
	
	var idCount = 0;
	$.extend({
		/**
		 * generate unique ID
		 */
		generateID: function (prefix) {
			idCount++;
			return prefix ? prefix + '-' + idCount : idCount; 
		},
		
		/**
		 * check if element is a single checkbox
		 */
		isSingleCheckbox: function (element) {
			var $element = $(element);
			
			if (!$element.is(':checkbox')) {
				return false;
			}
			
			return $element.parents('.checkboxgroup').length || $element.closest('.checkbox').siblings('.checkbox').length ? false : true;
		}
	});

	$.fn.extend({
		outerHtml: function () {
			return $('<div>').append(this.eq(0).clone()).html();
		}
	});
			
}(jQuery));
/*
 * jQuery validation plug-in 1.7
 *
 * http://bassistance.de/jquery-plugins/jquery-plugin-validation/
 * http://docs.jquery.com/Plugins/Validation
 *
 * Copyright (c) 2006 - 2008 Jörn Zaefferer
 *
 * $Id: jquery.validate.js 6403 2009-06-17 14:27:16Z joern.zaefferer $
 *
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 */

(function($) {

$.extend($.fn, {
	// http://docs.jquery.com/Plugins/Validation/validate
	validate: function( options ) {

		// if nothing is selected, return nothing; can't chain anyway
		if (!this.length) {
			options && options.debug && window.console && console.warn( "nothing selected, can't validate, returning nothing" );
			return;
		}

		// check if a validator for this form was already created
		var validator = $.data(this[0], 'validator');
		if ( validator ) {
			return validator;
		}
		
		validator = new $.validator( options, this[0] );
		$.data(this[0], 'validator', validator); 
		
		if ( validator.settings.onsubmit ) {
		
			// allow suppresing validation by adding a cancel class to the submit button
			this.find("input, button").filter(".cancel").click(function() {
				validator.cancelSubmit = true;
			});
			
			// when a submitHandler is used, capture the submitting button
			if (validator.settings.submitHandler) {
				this.find("input, button").filter(":submit").click(function() {
					validator.submitButton = this;
				});
			}
		
			// validate the form on submit
			this.submit( function( event ) {
				if ( validator.settings.debug )
					// prevent form submit to be able to see console output
					event.preventDefault();
					
				function handle() {
					if ( validator.settings.submitHandler ) {
						if (validator.submitButton) {
							// insert a hidden input as a replacement for the missing submit button
							var hidden = $("<input type='hidden'/>").attr("name", validator.submitButton.name).val(validator.submitButton.value).appendTo(validator.currentForm);
						}
						validator.settings.submitHandler.call( validator, validator.currentForm );
						if (validator.submitButton) {
							// and clean up afterwards; thanks to no-block-scope, hidden can be referenced
							hidden.remove();
						}
						return false;
					}
					return true;
				}
					
				// prevent submit for invalid forms or custom submit handlers
				if ( validator.cancelSubmit ) {
					validator.cancelSubmit = false;
					return handle();
				}
				if ( validator.form() ) {
					if ( validator.pendingRequest ) {
						validator.formSubmitted = true;
						return false;
					}
					return handle();
				} else {
					validator.focusInvalid();
					return false;
				}
			});
		}
		
		return validator;
	},
	// http://docs.jquery.com/Plugins/Validation/valid
	valid: function() {
        if ( $(this[0]).is('form')) {
            return this.validate().form();
        } else {
            var valid = true;
            var validator = $(this[0].form).validate();
            this.each(function() {
				valid &= validator.element(this);
            });
            return valid;
        }
    },
	// attributes: space seperated list of attributes to retrieve and remove
	removeAttrs: function(attributes) {
		var result = {},
			$element = this;
		$.each(attributes.split(/\s/), function(index, value) {
			result[value] = $element.attr(value);
			$element.removeAttr(value);
		});
		return result;
	},
	// http://docs.jquery.com/Plugins/Validation/rules
	rules: function(command, argument) {
		var element = this[0];
		
		if (command) {
			var settings = $.data(element.form, 'validator').settings;
			var staticRules = settings.rules;
			var existingRules = $.validator.staticRules(element);
			switch(command) {
			case "add":
				$.extend(existingRules, $.validator.normalizeRule(argument));
				staticRules[element.name] = existingRules;
				if (argument.messages)
					settings.messages[element.name] = $.extend( settings.messages[element.name], argument.messages );
				break;
			case "remove":
				if (!argument) {
					delete staticRules[element.name];
					return existingRules;
				}
				var filtered = {};
				$.each(argument.split(/\s/), function(index, method) {
					filtered[method] = existingRules[method];
					delete existingRules[method];
				});
				return filtered;
			}
		}
		
		var data = $.validator.normalizeRules(
		$.extend(
			{},
			$.validator.metadataRules(element),
			$.validator.classRules(element),
			$.validator.attributeRules(element),
			$.validator.staticRules(element)
		), element);
		
		// make sure required is at front
		if (data.required) {
			var param = data.required;
			delete data.required;
			data = $.extend({required: param}, data);
		}
		
		return data;
	}
});

// Custom selectors
$.extend($.expr[":"], {
	// http://docs.jquery.com/Plugins/Validation/blank
	blank: function(a) {return !$.trim("" + a.value);},
	// http://docs.jquery.com/Plugins/Validation/filled
	filled: function(a) {return !!$.trim("" + a.value);},
	// http://docs.jquery.com/Plugins/Validation/unchecked
	unchecked: function(a) {return !a.checked;}
});

// constructor for validator
$.validator = function( options, form ) {
	this.settings = $.extend( true, {}, $.validator.defaults, options );
	this.currentForm = form;
	this.init();
};

$.validator.format = function(source, params) {
	if ( arguments.length == 1 ) 
		return function() {
			var args = $.makeArray(arguments);
			args.unshift(source);
			return $.validator.format.apply( this, args );
		};
	if ( arguments.length > 2 && params.constructor != Array  ) {
		params = $.makeArray(arguments).slice(1);
	}
	if ( params.constructor != Array ) {
		params = [ params ];
	}
	$.each(params, function(i, n) {
		source = source.replace(new RegExp("\\{" + i + "\\}", "g"), n);
	});
	return source;
};

$.extend($.validator, {
	
	defaults: {
		messages: {},
		groups: {},
		rules: {},
		errorClass: "error",
		validClass: "valid",
		errorElement: "label",
		focusInvalid: true,
		errorContainer: $( [] ),
		errorLabelContainer: $( [] ),
		onsubmit: true,
		ignore: [],
		ignoreTitle: false,
		onfocusin: function(element) {
			this.lastActive = element;
				
			// hide error label and remove error class on focus if enabled
			if ( this.settings.focusCleanup && !this.blockFocusCleanup ) {
				this.settings.unhighlight && this.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );
				this.errorsFor(element).hide();
			}
		},
		onfocusout: function(element) {
			if ( !this.checkable(element) && (element.name in this.submitted || !this.optional(element)) ) {
				this.element(element);
			}
		},
		onkeyup: function(element) {
			if ( element.name in this.submitted || element == this.lastElement ) {
				this.element(element);
			}
		},
		onclick: function(element) {
			// click on selects, radiobuttons and checkboxes
			if ( element.name in this.submitted )
				this.element(element);
			// or option elements, check parent select in that case
			else if (element.parentNode.name in this.submitted)
				this.element(element.parentNode);
		},
		highlight: function( element, errorClass, validClass ) {
			$(element).addClass(errorClass).removeClass(validClass);
		},
		unhighlight: function( element, errorClass, validClass ) {
			$(element).removeClass(errorClass).addClass(validClass);
		}
	},

	// http://docs.jquery.com/Plugins/Validation/Validator/setDefaults
	setDefaults: function(settings) {
		$.extend( $.validator.defaults, settings );
	},

	messages: {
		required: "This field is required.",
		remote: "Please fix this field.",
		email: "Please enter a valid email address.",
		url: "Please enter a valid URL.",
		date: "Please enter a valid date.",
		dateISO: "Please enter a valid date (ISO).",
		number: "Please enter a valid number.",
		digits: "Please enter only digits.",
		creditcard: "Please enter a valid credit card number.",
		equalTo: "Please enter the same value again.",
		accept: "Please enter a value with a valid extension.",
		maxlength: $.validator.format("Please enter no more than {0} characters."),
		minlength: $.validator.format("Please enter at least {0} characters."),
		rangelength: $.validator.format("Please enter a value between {0} and {1} characters long."),
		range: $.validator.format("Please enter a value between {0} and {1}."),
		max: $.validator.format("Please enter a value less than or equal to {0}."),
		min: $.validator.format("Please enter a value greater than or equal to {0}.")
	},
	
	autoCreateRanges: false,
	
	prototype: {
		
		init: function() {
			this.labelContainer = $(this.settings.errorLabelContainer);
			this.errorContext = this.labelContainer.length && this.labelContainer || $(this.currentForm);
			this.containers = $(this.settings.errorContainer).add( this.settings.errorLabelContainer );
			this.submitted = {};
			this.valueCache = {};
			this.pendingRequest = 0;
			this.pending = {};
			this.invalid = {};
			this.reset();
			
			var groups = (this.groups = {});
			$.each(this.settings.groups, function(key, value) {
				$.each(value.split(/\s/), function(index, name) {
					groups[name] = key;
				});
			});
			var rules = this.settings.rules;
			$.each(rules, function(key, value) {
				rules[key] = $.validator.normalizeRule(value);
			});
			
			function delegate(event) {
				var validator = $.data(this[0].form, "validator"),
					eventType = "on" + event.type.replace(/^validate/, "");
				
				validator.settings[eventType] && validator.settings[eventType].call(validator, this[0] );
			}
			$(this.currentForm)
				.validateDelegate(":text, :password, :file, select, textarea", "focusin focusout keyup", delegate)
				.validateDelegate(":radio, :checkbox, select, option", "click", delegate);

			if (this.settings.invalidHandler)
				$(this.currentForm).bind("invalid-form.validate", this.settings.invalidHandler);
		},

		// http://docs.jquery.com/Plugins/Validation/Validator/form
		form: function() {
			this.checkForm();
			$.extend(this.submitted, this.errorMap);
			this.invalid = $.extend({}, this.errorMap);
			if (!this.valid())
				$(this.currentForm).triggerHandler("invalid-form", [this]);
			this.showErrors();
			return this.valid();
		},
		
		checkForm: function() {
			this.prepareForm();
			for ( var i = 0, elements = (this.currentElements = this.elements()); elements[i]; i++ ) {
				this.check( elements[i] );
			}
			return this.valid(); 
		},
		
		// http://docs.jquery.com/Plugins/Validation/Validator/element
		element: function( element ) {
			element = this.clean( element );
			this.lastElement = element;
			this.prepareElement( element );
			this.currentElements = $(element);
			var result = this.check( element );
			if ( result ) {
				delete this.invalid[element.name];
			} else {
				this.invalid[element.name] = true;
			}
			if ( !this.numberOfInvalids() ) {
				// Hide error containers on last error
				this.toHide = this.toHide.add( this.containers );
			}
			this.showErrors();
			return result;
		},

		// http://docs.jquery.com/Plugins/Validation/Validator/showErrors
		showErrors: function(errors) {
			if(errors) {
				// add items to error list and map
				$.extend( this.errorMap, errors );
				this.errorList = [];
				for ( var name in errors ) {
					this.errorList.push({
						message: errors[name],
						element: this.findByName(name)[0]
					});
				}
				// remove items from success list
				this.successList = $.grep( this.successList, function(element) {
					return !(element.name in errors);
				});
			}
			this.settings.showErrors
				? this.settings.showErrors.call( this, this.errorMap, this.errorList )
				: this.defaultShowErrors();
		},
		
		// http://docs.jquery.com/Plugins/Validation/Validator/resetForm
		resetForm: function() {
			if ( $.fn.resetForm )
				$( this.currentForm ).resetForm();
			this.submitted = {};
			this.prepareForm();
			this.hideErrors();
			this.elements().removeClass( this.settings.errorClass );
		},
		
		numberOfInvalids: function() {
			return this.objectLength(this.invalid);
		},
		
		objectLength: function( obj ) {
			var count = 0;
			for ( var i in obj )
				count++;
			return count;
		},
		
		hideErrors: function() {
			this.addWrapper( this.toHide ).hide();
		},
		
		valid: function() {
			return this.size() == 0;
		},
		
		size: function() {
			return this.errorList.length;
		},
		
		focusInvalid: function() {
			if( this.settings.focusInvalid ) {
				try {
					$(this.findLastActive() || this.errorList.length && this.errorList[0].element || [])
					.filter(":visible")
					.focus()
					// manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find
					.trigger("focusin");
				} catch(e) {
					// ignore IE throwing errors when focusing hidden elements
				}
			}
		},
		
		findLastActive: function() {
			var lastActive = this.lastActive;
			return lastActive && $.grep(this.errorList, function(n) {
				return n.element.name == lastActive.name;
			}).length == 1 && lastActive;
		},
		
		elements: function() {
			var validator = this,
				rulesCache = {};
			
			// select all valid inputs inside the form (no submit or reset buttons)
			// workaround $Query([]).add until http://dev.jquery.com/ticket/2114 is solved
			return $([]).add(this.currentForm.elements)
			.filter(":input")
			.not(":submit, :reset, :image, [disabled]")
			.not( this.settings.ignore )
			.filter(function() {
				!this.name && validator.settings.debug && window.console && console.error( "%o has no name assigned", this);
			
				// select only the first element for each name, and only those with rules specified
				if ( this.name in rulesCache || !validator.objectLength($(this).rules()) )
					return false;
				
				rulesCache[this.name] = true;
				return true;
			});
		},
		
		clean: function( selector ) {
			return $( selector )[0];
		},
		
		errors: function() {
			return $( this.settings.errorElement + "." + this.settings.errorClass, this.errorContext );
		},
		
		reset: function() {
			this.successList = [];
			this.errorList = [];
			this.errorMap = {};
			this.toShow = $([]);
			this.toHide = $([]);
			this.currentElements = $([]);
		},
		
		prepareForm: function() {
			this.reset();
			this.toHide = this.errors().add( this.containers );
		},
		
		prepareElement: function( element ) {
			this.reset();
			this.toHide = this.errorsFor(element);
		},
	
		check: function( element ) {
			element = this.clean( element );
			
			// if radio/checkbox, validate first element in group instead
			if (this.checkable(element)) {
				element = this.findByName( element.name )[0];
			}
			
			var rules = $(element).rules();
			var dependencyMismatch = false;
			for( method in rules ) {
				var rule = { method: method, parameters: rules[method] };
				try {
					var result = $.validator.methods[method].call( this, element.value.replace(/\r/g, ""), element, rule.parameters );
					
					// if a method indicates that the field is optional and therefore valid,
					// don't mark it as valid when there are no other rules
					if ( result == "dependency-mismatch" ) {
						dependencyMismatch = true;
						continue;
					}
					dependencyMismatch = false;
					
					if ( result == "pending" ) {
						this.toHide = this.toHide.not( this.errorsFor(element) );
						return;
					}
					
					if( !result ) {
						this.formatAndAdd( element, rule );
						return false;
					}
				} catch(e) {
					this.settings.debug && window.console && console.log("exception occured when checking element " + element.id
						 + ", check the '" + rule.method + "' method", e);
					throw e;
				}
			}
			if (dependencyMismatch)
				return;
			if ( this.objectLength(rules) )
				this.successList.push(element);
			return true;
		},
		
		// return the custom message for the given element and validation method
		// specified in the element's "messages" metadata
		customMetaMessage: function(element, method) {
			if (!$.metadata)
				return;
			
			var meta = this.settings.meta
				? $(element).metadata()[this.settings.meta]
				: $(element).metadata();
			
			return meta && meta.messages && meta.messages[method];
		},
		
		// return the custom message for the given element name and validation method
		customMessage: function( name, method ) {
			var m = this.settings.messages[name];
			return m && (m.constructor == String
				? m
				: m[method]);
		},
		
		// return the first defined argument, allowing empty strings
		findDefined: function() {
			for(var i = 0; i < arguments.length; i++) {
				if (arguments[i] !== undefined)
					return arguments[i];
			}
			return undefined;
		},
		
		defaultMessage: function( element, method) {
			return this.findDefined(
				this.customMessage( element.name, method ),
				this.customMetaMessage( element, method ),
				// title is never undefined, so handle empty string as undefined
				!this.settings.ignoreTitle && element.title || undefined,
				$.validator.messages[method],
				"<strong>Warning: No message defined for " + element.name + "</strong>"
			);
		},
		
		formatAndAdd: function( element, rule ) {
			var message = this.defaultMessage( element, rule.method ),
				theregex = /\$?\{(\d+)\}/g;
			if ( typeof message == "function" ) {
				message = message.call(this, rule.parameters, element);
			} else if (theregex.test(message)) {
				message = jQuery.format(message.replace(theregex, '{$1}'), rule.parameters);
			}			
			this.errorList.push({
				message: message,
				element: element
			});
			
			this.errorMap[element.name] = message;
			this.submitted[element.name] = message;
		},
		
		addWrapper: function(toToggle) {
			if ( this.settings.wrapper )
				toToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );
			return toToggle;
		},
		
		defaultShowErrors: function() {
			for ( var i = 0; this.errorList[i]; i++ ) {
				var error = this.errorList[i];
				this.settings.highlight && this.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );
				this.showLabel( error.element, error.message );
			}
			if( this.errorList.length ) {
				this.toShow = this.toShow.add( this.containers );
			}
			if (this.settings.success) {
				for ( var i = 0; this.successList[i]; i++ ) {
					this.showLabel( this.successList[i] );
				}
			}
			if (this.settings.unhighlight) {
				for ( var i = 0, elements = this.validElements(); elements[i]; i++ ) {
					this.settings.unhighlight.call( this, elements[i], this.settings.errorClass, this.settings.validClass );
				}
			}
			this.toHide = this.toHide.not( this.toShow );
			this.hideErrors();
			this.addWrapper( this.toShow ).show();
		},
		
		validElements: function() {
			return this.currentElements.not(this.invalidElements());
		},
		
		invalidElements: function() {
			return $(this.errorList).map(function() {
				return this.element;
			});
		},
		
		showLabel: function(element, message) {
			var label = this.errorsFor( element );
			if ( label.length ) {
				// refresh error/success class
				label.removeClass().addClass( this.settings.errorClass );
			
				// check if we have a generated label, replace the message then
				label.attr("generated") && label.html(message);
			} else {
				// create label
				label = $("<" + this.settings.errorElement + "/>")
					.attr({"for":  this.idOrName(element), generated: true})
					.addClass(this.settings.errorClass)
					.html(message || "");
				if ( this.settings.wrapper ) {
					// make sure the element is visible, even in IE
					// actually showing the wrapped element is handled elsewhere
					label = label.hide().show().wrap("<" + this.settings.wrapper + "/>").parent();
				}
				if ( !this.labelContainer.append(label).length )
					this.settings.errorPlacement
						? this.settings.errorPlacement(label, $(element) )
						: label.insertAfter(element);
			}
			if ( !message && this.settings.success ) {
				label.text("");
				typeof this.settings.success == "string"
					? label.addClass( this.settings.success )
					: this.settings.success( label );
			}
			this.toShow = this.toShow.add(label);
		},
		
		errorsFor: function(element) {
			var name = this.idOrName(element);
    		return this.errors().filter(function() {
				return $(this).attr('for') == name;
			});
		},
		
		idOrName: function(element) {
			return this.groups[element.name] || (this.checkable(element) ? element.name : element.id || element.name);
		},

		checkable: function( element ) {
			return /radio|checkbox/i.test(element.type);
		},
		
		findByName: function( name ) {
			// select by name and filter by form for performance over form.find("[name=...]")
			var form = this.currentForm;
			return $(document.getElementsByName(name)).map(function(index, element) {
				return element.form == form && element.name == name && element  || null;
			});
		},
		
		getLength: function(value, element) {
			switch( element.nodeName.toLowerCase() ) {
			case 'select':
				return $("option:selected", element).length;
			case 'input':
				if( this.checkable( element) )
					return this.findByName(element.name).filter(':checked').length;
			}
			return value.length;
		},
	
		depend: function(param, element) {
			return this.dependTypes[typeof param]
				? this.dependTypes[typeof param](param, element)
				: true;
		},
	
		dependTypes: {
			"boolean": function(param, element) {
				return param;
			},
			"string": function(param, element) {
				return !!$(param, element.form).length;
			},
			"function": function(param, element) {
				return param(element);
			}
		},
		
		optional: function(element) {
			return !$.validator.methods.required.call(this, $.trim(element.value), element) && "dependency-mismatch";
		},
		
		startRequest: function(element) {
			if (!this.pending[element.name]) {
				this.pendingRequest++;
				this.pending[element.name] = true;
			}
		},
		
		stopRequest: function(element, valid) {
			this.pendingRequest--;
			// sometimes synchronization fails, make sure pendingRequest is never < 0
			if (this.pendingRequest < 0)
				this.pendingRequest = 0;
			delete this.pending[element.name];
			if ( valid && this.pendingRequest == 0 && this.formSubmitted && this.form() ) {
				$(this.currentForm).submit();
				this.formSubmitted = false;
			} else if (!valid && this.pendingRequest == 0 && this.formSubmitted) {
				$(this.currentForm).triggerHandler("invalid-form", [this]);
				this.formSubmitted = false;
			}
		},
		
		previousValue: function(element) {
			return $.data(element, "previousValue") || $.data(element, "previousValue", {
				old: null,
				valid: true,
				message: this.defaultMessage( element, "remote" )
			});
		}
		
	},
	
	classRuleSettings: {
		required: {required: true},
		email: {email: true},
		url: {url: true},
		date: {date: true},
		dateISO: {dateISO: true},
		dateDE: {dateDE: true},
		number: {number: true},
		numberDE: {numberDE: true},
		digits: {digits: true},
		creditcard: {creditcard: true}
	},
	
	addClassRules: function(className, rules) {
		className.constructor == String ?
			this.classRuleSettings[className] = rules :
			$.extend(this.classRuleSettings, className);
	},
	
	classRules: function(element) {
		var rules = {};
		var classes = $(element).attr('class');
		classes && $.each(classes.split(' '), function() {
			if (this in $.validator.classRuleSettings) {
				$.extend(rules, $.validator.classRuleSettings[this]);
			}
		});
		return rules;
	},
	
	attributeRules: function(element) {
		var rules = {};
		var $element = $(element);
		
		for (method in $.validator.methods) {
			var value = $element.attr(method);
			if (value) {
				rules[method] = value;
			}
		}
		
		// maxlength may be returned as -1, 2147483647 (IE) and 524288 (safari) for text inputs
		if (rules.maxlength && /-1|2147483647|524288/.test(rules.maxlength)) {
			delete rules.maxlength;
		}
		
		return rules;
	},
	
	metadataRules: function(element) {
		if (!$.metadata) return {};
		
		var meta = $.data(element.form, 'validator').settings.meta;
		return meta ?
			$(element).metadata()[meta] :
			$(element).metadata();
	},
	
	staticRules: function(element) {
		var rules = {};
		var validator = $.data(element.form, 'validator');
		if (validator.settings.rules) {
			rules = $.validator.normalizeRule(validator.settings.rules[element.name]) || {};
		}
		return rules;
	},
	
	normalizeRules: function(rules, element) {
		// handle dependency check
		$.each(rules, function(prop, val) {
			// ignore rule when param is explicitly false, eg. required:false
			if (val === false) {
				delete rules[prop];
				return;
			}
			if (val.param || val.depends) {
				var keepRule = true;
				switch (typeof val.depends) {
					case "string":
						keepRule = !!$(val.depends, element.form).length;
						break;
					case "function":
						keepRule = val.depends.call(element, element);
						break;
				}
				if (keepRule) {
					rules[prop] = val.param !== undefined ? val.param : true;
				} else {
					delete rules[prop];
				}
			}
		});
		
		// evaluate parameters
		$.each(rules, function(rule, parameter) {
			rules[rule] = $.isFunction(parameter) ? parameter(element) : parameter;
		});
		
		// clean number parameters
		$.each(['minlength', 'maxlength', 'min', 'max'], function() {
			if (rules[this]) {
				rules[this] = Number(rules[this]);
			}
		});
		$.each(['rangelength', 'range'], function() {
			if (rules[this]) {
				rules[this] = [Number(rules[this][0]), Number(rules[this][1])];
			}
		});
		
		if ($.validator.autoCreateRanges) {
			// auto-create ranges
			if (rules.min && rules.max) {
				rules.range = [rules.min, rules.max];
				delete rules.min;
				delete rules.max;
			}
			if (rules.minlength && rules.maxlength) {
				rules.rangelength = [rules.minlength, rules.maxlength];
				delete rules.minlength;
				delete rules.maxlength;
			}
		}
		
		// To support custom messages in metadata ignore rule methods titled "messages"
		if (rules.messages) {
			delete rules.messages;
		}
		
		return rules;
	},
	
	// Converts a simple string to a {string: true} rule, e.g., "required" to {required:true}
	normalizeRule: function(data) {
		if( typeof data == "string" ) {
			var transformed = {};
			$.each(data.split(/\s/), function() {
				transformed[this] = true;
			});
			data = transformed;
		}
		return data;
	},
	
	// http://docs.jquery.com/Plugins/Validation/Validator/addMethod
	addMethod: function(name, method, message) {
		$.validator.methods[name] = method;
		$.validator.messages[name] = message != undefined ? message : $.validator.messages[name];
		if (method.length < 3) {
			$.validator.addClassRules(name, $.validator.normalizeRule(name));
		}
	},

	methods: {

		// http://docs.jquery.com/Plugins/Validation/Methods/required
		required: function(value, element, param) {
			// check if dependency is met
			if ( !this.depend(param, element) )
				return "dependency-mismatch";
			switch( element.nodeName.toLowerCase() ) {
			case 'select':
				// could be an array for select-multiple or a string, both are fine this way
				var val = $(element).val();
				return val && val.length > 0;
			case 'input':
				if ( this.checkable(element) )
					return this.getLength(value, element) > 0;
			default:
				return $.trim(value).length > 0;
			}
		},
		
		// http://docs.jquery.com/Plugins/Validation/Methods/remote
		remote: function(value, element, param) {
			if ( this.optional(element) )
				return "dependency-mismatch";
			
			var previous = this.previousValue(element);
			if (!this.settings.messages[element.name] )
				this.settings.messages[element.name] = {};
			previous.originalMessage = this.settings.messages[element.name].remote;
			this.settings.messages[element.name].remote = previous.message;
			
			param = typeof param == "string" && {url:param} || param; 
			
			if ( previous.old !== value ) {
				previous.old = value;
				var validator = this;
				this.startRequest(element);
				var data = {};
				data[element.name] = value;
				$.ajax($.extend(true, {
					url: param,
					mode: "abort",
					port: "validate" + element.name,
					dataType: "json",
					data: data,
					success: function(response) {
						validator.settings.messages[element.name].remote = previous.originalMessage;
						var valid = response === true;
						if ( valid ) {
							var submitted = validator.formSubmitted;
							validator.prepareElement(element);
							validator.formSubmitted = submitted;
							validator.successList.push(element);
							validator.showErrors();
						} else {
							var errors = {};
							var message = (previous.message = response || validator.defaultMessage( element, "remote" ));
							errors[element.name] = $.isFunction(message) ? message(value) : message;
							validator.showErrors(errors);
						}
						previous.valid = valid;
						validator.stopRequest(element, valid);
					}
				}, param));
				return "pending";
			} else if( this.pending[element.name] ) {
				return "pending";
			}
			return previous.valid;
		},

		// http://docs.jquery.com/Plugins/Validation/Methods/minlength
		minlength: function(value, element, param) {
			return this.optional(element) || this.getLength($.trim(value), element) >= param;
		},
		
		// http://docs.jquery.com/Plugins/Validation/Methods/maxlength
		maxlength: function(value, element, param) {
			return this.optional(element) || this.getLength($.trim(value), element) <= param;
		},
		
		// http://docs.jquery.com/Plugins/Validation/Methods/rangelength
		rangelength: function(value, element, param) {
			var length = this.getLength($.trim(value), element);
			return this.optional(element) || ( length >= param[0] && length <= param[1] );
		},
		
		// http://docs.jquery.com/Plugins/Validation/Methods/min
		min: function( value, element, param ) {
			return this.optional(element) || value >= param;
		},
		
		// http://docs.jquery.com/Plugins/Validation/Methods/max
		max: function( value, element, param ) {
			return this.optional(element) || value <= param;
		},
		
		// http://docs.jquery.com/Plugins/Validation/Methods/range
		range: function( value, element, param ) {
			return this.optional(element) || ( value >= param[0] && value <= param[1] );
		},
		
		// http://docs.jquery.com/Plugins/Validation/Methods/email
		email: function(value, element) {
			// contributed by Scott Gonzalez: http://projects.scottsplayground.com/email_address_validation/
			return this.optional(element) || /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value);
		},
	
		// http://docs.jquery.com/Plugins/Validation/Methods/url
		url: function(value, element) {
			// contributed by Scott Gonzalez: http://projects.scottsplayground.com/iri/
			return this.optional(element) || /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value);
		},
        
		// http://docs.jquery.com/Plugins/Validation/Methods/date
		date: function(value, element) {
			console.log("build in");
			return this.optional(element) || !/Invalid|NaN/.test(new Date(value));
		},
	
		// http://docs.jquery.com/Plugins/Validation/Methods/dateISO
		dateISO: function(value, element) {
			return this.optional(element) || /^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(value);
		},
		
		// http://docs.jquery.com/Plugins/Validation/Methods/dateDE
		dateDE: function(value, element) {
			return this.optional(element) || /^\d\d?\.\d\d?\.\d\d\d?\d?$/.test(value);
		},
	
		// http://docs.jquery.com/Plugins/Validation/Methods/number
		number: function(value, element) {
			return this.optional(element) || /^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(value);
		},
	
		// http://docs.jquery.com/Plugins/Validation/Methods/digits
		digits: function(value, element) {
			return this.optional(element) || /^\d+$/.test(value);
		},
		
		// http://docs.jquery.com/Plugins/Validation/Methods/creditcard
		// based on http://en.wikipedia.org/wiki/Luhn
		creditcard: function(value, element) {
			if ( this.optional(element) )
				return "dependency-mismatch";
			// accept only digits and dashes
			if (/[^0-9-]+/.test(value))
				return false;
			var nCheck = 0,
				nDigit = 0,
				bEven = false;

			value = value.replace(/\D/g, "");

			for (var n = value.length - 1; n >= 0; n--) {
				var cDigit = value.charAt(n);
				var nDigit = parseInt(cDigit, 10);
				if (bEven) {
					if ((nDigit *= 2) > 9)
						nDigit -= 9;
				}
				nCheck += nDigit;
				bEven = !bEven;
			}

			return (nCheck % 10) == 0;
		},
		
		// http://docs.jquery.com/Plugins/Validation/Methods/accept
		accept: function(value, element, param) {
			param = typeof param == "string" ? param.replace(/,/g, '|') : "png|jpe?g|gif";
			return this.optional(element) || value.match(new RegExp(".(" + param + ")$", "i")); 
		},
		
		// http://docs.jquery.com/Plugins/Validation/Methods/equalTo
		equalTo: function(value, element, param) {
			// bind to the blur event of the target in order to revalidate whenever the target field is updated
			// TODO find a way to bind the event just once, avoiding the unbind-rebind overhead
			var target = $(param).unbind(".validate-equalTo").bind("blur.validate-equalTo", function() {
				$(element).valid();
			});
			return value == target.val();
		}
		
	}
	
});

// deprecated, use $.validator.format instead
$.format = $.validator.format;

})(jQuery);

// ajax mode: abort
// usage: $.ajax({ mode: "abort"[, port: "uniqueport"]});
// if mode:"abort" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort() 
;(function($) {
	var ajax = $.ajax;
	var pendingRequests = {};
	$.ajax = function(settings) {
		// create settings for compatibility with ajaxSetup
		settings = $.extend(settings, $.extend({}, $.ajaxSettings, settings));
		var port = settings.port;
		if (settings.mode == "abort") {
			if ( pendingRequests[port] ) {
				pendingRequests[port].abort();
			}
			return (pendingRequests[port] = ajax.apply(this, arguments));
		}
		return ajax.apply(this, arguments);
	};
})(jQuery);

// provides cross-browser focusin and focusout events
// IE has native support, in other browsers, use event caputuring (neither bubbles)

// provides delegate(type: String, delegate: Selector, handler: Callback) plugin for easier event delegation
// handler is only called when $(event.target).is(delegate), in the scope of the jquery-object for event.target 
;(function($) {
	// only implement if not provided by jQuery core (since 1.4)
	// TODO verify if jQuery 1.4's implementation is compatible with older jQuery special-event APIs
	if (!jQuery.event.special.focusin && !jQuery.event.special.focusout && document.addEventListener) {
		$.each({
			focus: 'focusin',
			blur: 'focusout'	
		}, function( original, fix ){
			$.event.special[fix] = {
				setup:function() {
					this.addEventListener( original, handler, true );
				},
				teardown:function() {
					this.removeEventListener( original, handler, true );
				},
				handler: function(e) {
					arguments[0] = $.event.fix(e);
					arguments[0].type = fix;
					return $.event.handle.apply(this, arguments);
				}
			};
			function handler(e) {
				e = $.event.fix(e);
				e.type = fix;
				return $.event.handle.call(this, e);
			}
		});
	};
	$.extend($.fn, {
		validateDelegate: function(delegate, type, handler) {
			return this.bind(type, function(event) {
				var target = $(event.target);
				if (target.is(delegate)) {
					return handler.apply(target, arguments);
				}
			});
		}
	});
})(jQuery);

/** 
 * @fileoverview 
 * overview
 *
 * @author $Author: joern $
 * @version $Rev: 5199 $ 
 * @date $Date: 2011-03-30 17:20:24 +0200 (Mi, 30 Mrz 2011) $
 *
 */
(function ($) {
	var validator = null,
		methods = {
			init: function (options) {
				return this.each(function () {
					var $form = $(this),
						marker = options.requiredMarker || '*',
						v;
					
					if ($.browser.msie && parseInt($.browser.version, 10) <= 8) {
						$form.addClass($.smaValidateOptions.ieFormClass);
					}
	
					// add required-marker
					$('input, textarea, select', $form).filter('.required:not(.noLabel)').each(function (i, element) {
						var $this = $(this),
							$label = $this.is(':checkbox, :radio') ? $this.parent().siblings('legend') : $('label[for=' + $this.attr('id') + ']', $form);
	
						if (!$.trim($this.attr('id')).length || !$('label[for=' + $this.attr('id') + ']', $form).length) {
							console.error('Please fill in the id-attribute of %o and the for-attribute of the associated label.', $this);
							console.info('If the field doesn\'t need a label, add the class "noLabel" to the Field.');
						}
						else if($label.text().indexOf(marker) === -1) {
							$label.append(' ' + $.trim(marker));
						}
					});
	
					// add validate-plugin
					validator = $(this).validate($.extend({}, $.smaValidateOptions, options));
				});
			},
		
			/**
			 * returns the validator object
			 */
			getValidator: function () {
				return validator !== null ? validator : false;
			}
		};
	
	/**
	 * @memberOf jQuery
	 * @name smaValidateOptions
	 * @namespace
	 * 
	 * @description
	 * Options for {@link $.fn.smaValidate} (SMA validation plugin). These options extend and override the default options of the <a href="http://docs.jquery.com/Plugins/Validation"jQuery.Validate>jQuery Validation plugin</a>.
	 */
	$.smaValidateOptions = {
			/**
			 * @name errorElement
			 * @fieldOf $.smaValidateOptions
			 * @type String
			 * @default span
			 *
			 * @ignore
			 *
			 * @description
			 * <a href="http://docs.jquery.com/Plugins/Validation/validate#toptions">jQuery Validation Docs</a>
			 */
			errorElement	: 'span',
			/**
			 * @name meta
			 * @fieldOf $.smaValidateOptions
			 * @type String
			 * @default validate
			 *
			 * @description
			 * In case you use metadata for other plugins, too, you want to wrap your validation rules into their own object that can be specified via this option.
			 * <br /><a href="http://docs.jquery.com/Plugins/Validation/validate#toptions">jQuery Validation Docs</a>
			 */
			meta			: 'validate',
			/**
			 *
			 */
			ieFormClass		: 'ie',
			ieErrorClass	: 'ieError',
			/**
			 *
			 */
			tooltipIcon		: true,
			tipTipOpts		: {
				position	: 'top left',
				delay		: 0,
				activation	: 'hover focus',
				edgeOffset	: '0 15'
			},
			/**
			 * @name errorPlacement
			 * @methodOf $.smaValidateOptions
			 *
			 * @ignore
			 *
			 * @description
			 * Customize placement of created error labels.
			 *
			 * @param {jQuery-Object} error The created error label as a jQuery object
			 * @param {jQuery-Object} placement The invalid element as a jQuery object.
			 */
			errorPlacement	: function (error, placement) {
				var data = $form.data('validator'),
					$insertInlineErrorAfter = false,
					$tooltipHolder = placement.data('tooltipHolder') || placement;

				// init element events
				if (!placement.data('hasValidationEvents')) {
				
					// add Tooltip-Support for checkbox/radio-groups
					if (placement.is(':checkbox, :radio')) {
						$tooltipHolder = false;
						$insertInlineErrorAfter = placement.parent().siblings('legend:first');

						// wrong (fallback): // check if container has more than one checkbox/radio children
						if ((placement.is(':' + placement[0].type) && placement.closest('.' + placement[0].type).siblings('.' + placement[0].type).length) && !(placement.parents('.checkboxgroup, .radiogroup').length)) {
							console.error('The container of the field %s > %s lacks the class "%sgroup"', placement.parent().siblings('legend:first').text(), $('[for=' + placement[0].id + ']').text(), placement[0].type);

							// fix: add group-class
							console.info('I will add the class "%s" temporarily!', placement[0].type + 'group');
							placement.closest('.' + placement[0].type).parent().addClass(placement[0].type + 'group');
						}
					}
					/* 
					 * wrap container around input fields 
					 * because of ie < 9 not supporting css outline property
					 */
					else if ($.browser.msie && parseInt($.browser.version, 10) <= 8) {
						placement.wrap('<div class="' + this.ieErrorClass + '"></div>');
					}

					// set or remove tooltipHolder
					if ($tooltipHolder) {
						placement.data('tooltipHolder', $tooltipHolder);
					}
					else {
						placement.removeData('tooltipHolder');
					}
					// set flag
					placement.data('hasValidationEvents', true);
				}

				// show error via tooltip
				if ($tooltipHolder) {
					if (!$tooltipHolder.data('tipTip')) {
						$tooltipHolder
							.tipTip($.extend({}, {
								content: error.text()
							}, $.smaValidateOptions.tipTipOpts))
							.unbind('mouseleave.tooltip');
					}
					// update text
//					tooltipData = $tooltipHolder.data('tipTip');
					if (error.text().length) {
						$tooltipHolder.tipTip('updateContent', error.text());
						$tooltipHolder.tipTip('updatePosition', $.smaValidateOptions.tipTipOpts.position);
						
						if (placement.is(':focus')) {
							$tooltipHolder.tipTip('open');
						}
					}

					// register and show
					if (data.tooltip === undefined) {
						data.tooltip = $tooltipHolder;
						$form.data('validator', data);
						
						if (error.text().length) {
							$tooltipHolder.tipTip('open');
						}
					}
				}
				// show error via inline element
				else if ($insertInlineErrorAfter) {
					error/*.prepend('<span class="icon"></span>')*/.insertAfter($insertInlineErrorAfter).hide();
				}
			},
			
			success: function (label, element) {
				var forAttr = label.attr('for'),
					data = $form.data('validator'),
					$tooltipHolder;

				if (!forAttr) {
					console.error('Please fill in the attributes "id" and "for" of the current field and the associated label.');
				}
				else {
					// remove open tooltip from form data
					delete data.tooltip;
					$form.data('validator', data);

					// destroy DOM
					$tooltipHolder = $('#' + forAttr).data('tooltipHolder');
					if ($tooltipHolder) {
						label.text('');
						$tooltipHolder.tipTip('destroy');
					}
					else {
						if ($(element).is(':checkbox, :radio')) {
							label.siblings('legend').removeClass('error ' + this.ieErrorClass);
						}
						label.stop(true, true).slideUp('fast', function () {
							$(this).text('');
						});
					}
				}
			},
			
			highlight: function (element, errorClass, validClass) {
				var $element = $(element),
					$additionalElements = $('label[for=' + $element.attr('id') + ']'), // label for single checkboxes
					$error,
					settings = $form.data('validator').settings;
					
				$element.add($additionalElements).addClass(errorClass).removeClass(validClass);
				
				if ($.validator.prototype.checkable(element)) {
					$element.parent().siblings('legend').addClass(errorClass).removeClass(validClass);
					$error = $element.parent().siblings('span.error');
					
					/*if (!$error.find('> span.icon').length) {
						$error.prepend('<span class="icon"></span>');
					}*/
					$error.not(':animated').stop(true, true).slideDown();
				}
				/* 
				 * wrap container around input fields 
				 * because of ie < 9 not supporting css outline property
				*/
				else if ($.browser.msie && parseInt($.browser.version, 10) <= 8 && !$element.parent().hasClass(settings.ieErrorClass)) {
					$element.wrap('<div class="' + settings.ieErrorClass + '"></div>');
				}
				
				$element.closest('div.' + settings.ieErrorClass).addClass(errorClass).removeClass(validClass);
			},
			
			unhighlight: function (element, errorClass, validClass) {
				var data = $form.data('validator'),
					$element = $(element),
					$additionalElements = $('label[for=' + $element.attr('id') + ']'),
					$tooltipHolder,
					settings = $form.data('validator').settings;

				//.add($(element).filter(':checkbox, :radio').parent().siblings('legend')); // legend for checkbox/radio-groups
				$element.add($additionalElements).removeClass(errorClass).addClass(validClass);
				
				/* 
				 * unwrap container around input fields 
				 * because of ie < 9 not supporting css outline property
				 */
				if ($.browser.msie && parseInt($.browser.version, 10) <= 8 && $element.parent().hasClass(settings.ieErrorClass)) {
					$element.closest('div.' + settings.ieErrorClass).addClass(validClass).removeClass(errorClass);
				}

				$tooltipHolder = $(element).data('tooltipHolder');
				if ($tooltipHolder && $tooltipHolder.length && $tooltipHolder.data('tipTip')) {
					$tooltipHolder.tipTip('destroy');
				}

				if (data.tooltip) {
					delete data.tooltip;
				}
				$form.data('tooltip', data);
			},
			
			showErrors: function () {
				var error, i;
				
				for (i = 0; this.errorList[i]; i++) {
					error = this.errorList[i];
					this.showLabel(error.element, error.message);
					this.settings.highlight && this.settings.highlight.call(this, error.element, this.settings.errorClass, this.settings.validClass);
				}
				if (this.errorList.length) {
					this.toShow = this.toShow.add(this.containers);
				}
				if (this.settings.success) {
					for (i = 0; this.successList[i]; i++) {
						this.showLabel(this.successList[i]);
					}
				}
				if (this.settings.unhighlight) {
					for (i = 0, elements = this.validElements(); elements[i]; i++) {
						this.settings.unhighlight.call(this, elements[i], this.settings.errorClass, this.settings.validClass);
					}
				}
				this.toHide = this.toHide.not(this.toShow);
				this.hideErrors();
				this.addWrapper(this.toShow);
			},
			
			onfocusout: function (element) {
				$(element).valid();
			},
		
			submitHandler: function () {
				alert('sucessfully submitted');
				//form.submit();
				return false;
			}
		};

	/**
	 * Override Validator focusInvalid
	 * add scrollTo Element.
	 */
	$.validator.prototype.focusInvalid = function () {
		if (this.settings.focusInvalid) {
			try {
				var $element = $(this.findLastActive() || (this.errorList.length && this.errorList[0].element) || []).filter(':visible');

				$('html,body').animate({
					scrollTop: $element.offset().top - 100
				}, 500, function () {
					$element.focus()
					// manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find
					.trigger('focusin');
				});
			} catch (e) {
				// ignore IE throwing errors when focusing hidden elements
			}
		}
	};

	/** 
	 * Override Validator showLabel
	 */
	$.validator.prototype.showLabel = function (element, message) {
		var label = this.errorsFor(element);
		if (label.length) {
			// refresh error/success class
			label.removeClass().addClass(this.settings.errorClass);

			// check if we have a generated label, replace the message then
			label.attr('generated') && label.html(message);
		}
		else {
			// create label
			label = $('<' + this.settings.errorElement + '/>').attr({
				'for': this.idOrName(element),
				generated: true
			}).addClass(this.settings.errorClass).html(message || '');
			if (this.settings.wrapper) {
				// make sure the element is visible, even in IE
				// actually showing the wrapped element is handled elsewhere
				label = label.hide().show().wrap('<' + this.settings.wrapper + '/>').parent();
			}
			if (!this.labelContainer.append(label).length) {
				this.settings.errorPlacement ? this.settings.errorPlacement(label, $(element)) : label.insertAfter(element);
			}
		}
		if (!message && this.settings.success) {
			//label.attr('generated') && label.text('');
			typeof this.settings.success === 'string' ? label.addClass(this.settings.success) : this.settings.success(label, element);
		}
		this.toShow = this.toShow.add(label);
	};
	
	/**
	 * Reset Form
	 */
	 $.validator.prototype.resetForm = function() {
		var $form	= $(this.currentForm),
			self	= this;
				
		if ( $.fn.resetForm ) {
			$(this.currentForm).resetForm();
		}
		this.submitted = {};
		this.prepareForm();
		this.hideErrors();
		this.elements().removeClass(this.settings.errorClass);
		
		this.elements().each(function (i) {
			var data = $form.data('validator'),
				$element = $(this),
				$tooltipHolder = $element.data('tooltipHolder');
				
			// ie
			if ($.browser.msie && parseInt($.browser.version, 10) <= 8) {
				$('div.' + self.ieErrorClass, $form).removeClass(self.settings.errorClass);
			}
			
			// Destroy Tooltip
			if ($tooltipHolder) {
				$tooltipHolder.tipTip('destroy');
			}
				
			//delete data.tooltip;
			$form.data('tooltip', data);
		});
	};
	 
	/**
	 * Override build in validate date method
	 * 
	 */
	$.validator.addMethod('date', function (value, element) {
		return this.optional(element) || !/Invalid|NaN/.test(new Date(value)) || /^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(value) || /^\d\d?\.\d\d?\.\d\d\d?\d?$/.test(value);
	}, 'test');

	/**
	 * @memberOf jQuery.fn
	 * @name smaValidate
	 * @namespace
	 * 
	 * @description 
	 * The SMA Validation plugin. Based on <a href="http://docs.jquery.com/Plugins/Validation"jQuery.Validate>jQuery Validation</a>.
	 * <br />Options and examples are listed at {@link $.smaValidateOptions}
	 *
	 * @param {String/Object} method The name of the method or an object with options
	 *
	 * @requires $.Metadata
	 * <br /><a href="http://docs.jquery.com/Plugins/Metadata">http://docs.jquery.com/Plugins/Metadata</a>
	 * <br /><a href="http://github.com/jquery/jquery-metadata">http://github.com/jquery/jquery-metadata</a>
	 *
	 * @see $.smaValidateOptions
	 * @see <a href="http://docs.jquery.com/Plugins/Validation/validate#options">http://docs.jquery.com/Plugins/Validation/validate#options</a>
	 *
	 * @example
	 * $('form').smaValidate();
	 */
	$.fn.smaValidate = function (method) {
		// sma validate methods
		if (methods[method]) {
			return methods[method].apply( this, Array.prototype.slice.call( arguments, 1 ));
		}
		// validation methods
		else if (validator !== null && validator[method]) {
			validator[method].apply(validator, Array.prototype.slice.call( arguments, 1 ));
			return this;
		}
		// init
		else if (typeof method === 'object' || !method) {
			return methods.init.apply(this, arguments);
		}
		else {
			$.error('Method "' +  method + '" doesn\'t exist on jQuery.smaValidate');
		}
	};
}(jQuery));
var browserName=navigator.appName;var browserVer=parseInt(navigator.appVersion);var version="";var msie4=(browserName=="Microsoft Internet Explorer"&&browserVer>=4);if((browserName=="Netscape"&&browserVer>=3)||msie4||browserName=="Konqueror"||browserName=="Opera"){version="n3";}else{version="n2";}
function blurLink(theObject){if(msie4){theObject.blur();}}
function decryptCharcode(n,start,end,offset){n=n+offset;if(offset>0&&n>end){n=start+(n-end-1);}else if(offset<0&&n<start){n=end-(start-n-1);}
return String.fromCharCode(n);}
function decryptString(enc,offset){var dec="";var len=enc.length;for(var i=0;i<len;i++){var n=enc.charCodeAt(i);if(n>=0x2B&&n<=0x3A){dec+=decryptCharcode(n,0x2B,0x3A,offset);}else if(n>=0x40&&n<=0x5A){dec+=decryptCharcode(n,0x40,0x5A,offset);}else if(n>=0x61&&n<=0x7A){dec+=decryptCharcode(n,0x61,0x7A,offset);}else{dec+=enc.charAt(i);}}
return dec;}
function linkTo_UnCryptMailto(s){location.href=decryptString(s,-2);}
/**
 * $Id: parameter.js 3652 2010-07-29 08:23:47Z kuehnel $
 */
var par = {
			// ids for header selectors und buttons
				dropdownselectors: [['countryselector','countrypages'],['smapagesselector','smapages']],
				searchurl: 'index.php?id=108&type=86',
				
				toggler: [
						//	['fetchadress','section_fetchadress_box'],
						//	['deliveryadress','section_deliveryadress_box'],
						//	['servicetechnician','section_servicetechnician_box'],
						//	['ess','section_ess_box'],
						],

						// Array Struktur: Id des auslösenden Elements, Id des zu verändernden Elements, Id des zu verändernden hidden Elements. 
				uncheckelements_kom : [
							['keine','display','com_display'],
							['keine','sunnybeam','com_sunnybeam'],
							['keine','rs485','com_rs485'],
							['keine','rs232','com_rs232'],
							['keine','nothing','com_keine'],
							['keine','powerline','com_powerline'],
							['keine','bluetooth','com_bluetooth'],
							['keine','nichtbekannt','com_nichtbekannt'],
							
							['display','keine','com_display'],
							['display','nichtbekannt','com_display'],
							['sunnybeam','keine','com_sunnybeam'],
							['sunnybeam','nichtbekannt','com_sunnybeam'],
							['rs485','keine','com_rs485'],
							['rs485','nichtbekannt','com_rs485'],
							['rs232','keine','com_rs232'],
							['rs232','nichtbekannt','com_rs232'],
							['powerline','keine','com_powerline'],
							['powerline','nichtbekannt','com_powerline'],
							['bluetooth','keine','com_bluetooth'],
							['bluetooth','nichtbekannt','com_bluetooth'],
							['nichtbekannt','keine','com_nichtbekannt'],
							
							['display','nichtbekannt','com_display'],
							
							['bluetooth','nichtbekannt','com_bluetooth'],
							
							['nichtbekannt','display','com_display'],
							['nichtbekannt','sunnybeam','com_sunnybeam'],
							['nichtbekannt','rs485','com_rs485'],
							['nichtbekannt','rs232','com_rs232'],
//							['nichtbekannt','nothing','com_keine'],
							['nichtbekannt','powerline','com_powerline'],
							['nichtbekannt','bluetooth','com_bluetooth'],
							
							['sunnybeam','keine','com_sunnybeam'],
							['sunnybeam','nichtbekannt','com_sunnybeam'],
							['sunnybeam','rs485','com_sunnybeam'],
							['sunnybeam','rs232','com_sunnybeam'],
							['sunnybeam','powerline','com_sunnybeam'],
							
							['rs485','keine','com_rs485'],
							['rs485','sunnybeam','com_rs485'],
							['rs485','rs232','com_rs485'],
							['rs485','powerline','com_rs485'],
							['rs485','nichtbekannt','com_rs485'],
							
							['rs232','keine','com_rs232'],
							['rs232','sunnybeam','com_rs232'],
							['rs232','rs485','com_rs232'],
							['rs232','powerline','com_rs232'],
							['rs232','nichtbekannt','com_rs232'],
							
							['powerline','keine','com_powerline'],
							['powerline','sunnybeam','com_powerline'],
							['powerline','rs485','com_powerline'],
							['powerline','rs232','com_powerline'],
							['powerline','nichtbekannt','com_powerline']
						],


				checked_kom : [
							['display','com_display'],
							['sunnybeam','com_sunnybeam'],
							['rs485','com_rs485'],
							['rs232','com_rs232'],
							['powerline','com_powerline'],
							['bluetooth','com_bluetooth'],
							['nichtbekannt','com_nichtbekannt'],
							['keine','com_keine']
				],
						
				uncheckelements_son : [
							['special_keine','ess','spec_ess'],
							['special_keine','ovp','spec_ovp'],
							['special_keine','teamplatine','spec_teamplatine'],
							['special_keine','erdungsset_positiv','spec_erdungsset_positiv'],
							['special_keine','erdungsset_negativ','spec_erdungsset_negativ'],
							['special_keine','spec_nothing','spec_keine'],
							['special_keine','special_nichtbekannt','spec_nichtbekannt'],
							
							['special_nichtbekannt','ess','spec_ess'],
							['special_nichtbekannt','ovp','spec_ovp'],
							['special_nichtbekannt','teamplatine','spec_teamplatine'],
							['special_nichtbekannt','erdungsset_positiv','spec_erdungsset_positiv'],
							['special_nichtbekannt','erdungsset_negativ','spec_erdungsset_negativ'],
							['special_nichtbekannt','spec_nothing','spec_keine'],
							['special_nichtbekannt','special_keine','spec_keine'],
							
							['ess','special_keine','spec_ess'],
							['ess','special_nichtbekannt','spec_nichtbekannt'],
							['ovp','special_keine','spec_ovp'],
							['ovp','special_nichtbekannt','spec_ovp'],
							['special_nichtbekannt','special_keine','spec_nichtbekannt'],
							['teamplatine','special_keine','spec_teamplatine'],
							['teamplatine','special_nichtbekannt','spec_teamplatine'],
							['erdungsset_positiv','special_keine','spec_erdungsset_positiv'],
							['erdungsset_positiv','special_nichtbekannt','spec_erdungsset_positiv'],
							['erdungsset_negativ','special_keine','spec_erdungsset_negativ'],
							['erdungsset_negativ','special_nichtbekannt','spec_erdungsset_negativ'],
							
							['erdungsset_positiv','erdungsset_negativ',''],
							['erdungsset_negativ','erdungsset_positiv','']
						],
						
				checked_spec : [
							['ovp','spec_ovp'],
							['ess','spec_ess'],
							['teamplatine','spec_teamplatine'],
							['erdungsset_positiv','spec_erdungsset_positiv'],
							['erdungsset_negativ','spec_erdungsset_negativ'],
							['special_nichtbekannt','spec_nichtbekannt'],
							['special_keine','spec_keine']
				],
				
				disable_enable : [
							['yellow_led','readonly'],
							['yellow_led_blink',''],
							['red_led','readonly'],
							['red_led_blinks','readonly'],
							['alle_led_an','readonly'],
							['alle_led_aus','readonly'],
							['lauf_led','readonly']
				],
				
				display_service : [
							['partner_abweichend','ansprechpartner','block'],
							['partner_entspricht','ansprechpartner','none'],
							['deliveryadress_abweichend','anlagenstandort','block'],
							['deliveryadress_entspricht','anlagenstandort','none'],
							['standort_abweichend_b','standortinfo','block'],
							['standort_entspricht_b','standortinfo','none'],
							['partner_abweichend_b','ansprechpartner_b','block'],
							['partner_entspricht_b','ansprechpartner_b','none']
				],
					
					
				checked_elements : [
							['val_powerline'],
							['val_bluetooth'],
							['val_rs232'],
							['val_rs485'],
							['val_sunnybeam'],
							['val_display'],
							['val_ovp'],
							['val_ess'],
							['val_teamplatine'],
							['val_erdungsset']
				],
				
				steckertyp : [
							['mc3'],
							['mc4'],
							['tyco'],
							['Sunclix'],
							['unbekannt']
				],
				
				komm_rs485 : [
						['rs485_ja'],
						['rs485_nein']
				],
				
				uncheck_sonder : [
							['sonder_keine','ens'],
							['sonder_keine','further'],
							['ens','sonder_keine'],
							['further','sonder_keine']
						],
				
				
				preselect_servicart : [
							['service','Technik','partner_entspricht','partner_abweichend','deliveryadress_entspricht','deliveryadress_abweichend'],
							['service','Versand','partner_entspricht_b','standort_entspricht_b']		
				],

				error_fields : [
				            ['err_guarantee','guarantee_123'],    
							['err_geraetetyp','error_type_row'],
							['err_seriennummer','serialnumber'],
							['err_duration','duration'],
							['err_install_location','install_location'],
							['err_blinks','blinkcount'],		
							['err_errordescription','errordescription'],
							['err_errordescription_b','errordescription_b'],
							['err_displayerror_b','displayerror_b'],
							['err_geraetesondereinstellungen','gs1'],
							['err_geraetesondereinstellungen','gs2'],
							['err_geraetesondereinstellungen','gs3'],
							['err_sondereinstellungen','furthermsg'],
							['err_service','service'],
							['err_service_anrede','titel'],
							['err_service_name','surname'],
							['err_service_vorname','forename'],
							['err_service_strasse','street'],
							['err_service_plz','zip'],
							['err_service_ort','city'],
							['err_service_telefon','phone'],
							['err_service_email','email'],
							['err_service_kommission','commission'],
							['err_partner_anrede','partner_titel'],
							['err_partner_name','partner_surname'],
							['err_partner_vorname','partner_forename'],
							['err_partner_telefon','partner_phone'],
							['err_deliveryadress_anrede','deliveryadress_titel'],
							['err_deliveryadress_name','deliveryadress_surname'],
							['err_deliveryadress_vorname','deliveryadress_forename'],
							['err_deliveryadress_telefon','deliveryadress_phone'],
							['err_deliveryadress_strasse','deliveryadress_street'],
							['err_deliveryadress_zip','deliveryadress_zip'],
							['err_deliveryadress_city','deliveryadress_city'],
							['err_deliveryadress_Telefon','deliveryadress_phone'],
							['err_partner_b_anrede','partner_b_titel'],
							['err_partner_b_name','partner_b_surname'],
							['err_partner_b_vorname','partner_b_forename'],
							['err_partner_b_strasse','partner_b_street'],
							['err_partner_b_plz','partner_b_zip'],
							['err_partner_b_ort','partner_b_city'],
							['err_partner_b_telefon','partner_b_phone'],
							['err_standort_anrede','standort_anrede'],
							['err_standort_name','standort_surname'],
							['err_standort_vorname','standort_forename'],
							['err_standort_strasse','standort_street'],
							['err_standort_plz','standort_zip'],
							['err_standort_anrede','standort_city'],
							['err_standort_telefon','standort_phone'],
							['err_kommunikation','kommunikation'],
							['err_sonderausstattung','sonderausstattung'],
							['err_steckertyp','steckertyp'],
							['err_error','errorbox1'],
							['err_error2','errorbox2'],
							['err_led','errorbox1'],
							['err_rs485','rs485_box']
			]	
};

/*
 * Copyright (c) 2009 Simo Kinnunen.
 * Licensed under the MIT license.
 *
 * @version 1.09i
 */
var Cufon=(function(){var m=function(){return m.replace.apply(null,arguments)};var x=m.DOM={ready:(function(){var C=false,E={loaded:1,complete:1};var B=[],D=function(){if(C){return}C=true;for(var F;F=B.shift();F()){}};if(document.addEventListener){document.addEventListener("DOMContentLoaded",D,false);window.addEventListener("pageshow",D,false)}if(!window.opera&&document.readyState){(function(){E[document.readyState]?D():setTimeout(arguments.callee,10)})()}if(document.readyState&&document.createStyleSheet){(function(){try{document.body.doScroll("left");D()}catch(F){setTimeout(arguments.callee,1)}})()}q(window,"load",D);return function(F){if(!arguments.length){D()}else{C?F():B.push(F)}}})(),root:function(){return document.documentElement||document.body}};var n=m.CSS={Size:function(C,B){this.value=parseFloat(C);this.unit=String(C).match(/[a-z%]*$/)[0]||"px";this.convert=function(D){return D/B*this.value};this.convertFrom=function(D){return D/this.value*B};this.toString=function(){return this.value+this.unit}},addClass:function(C,B){var D=C.className;C.className=D+(D&&" ")+B;return C},color:j(function(C){var B={};B.color=C.replace(/^rgba\((.*?),\s*([\d.]+)\)/,function(E,D,F){B.opacity=parseFloat(F);return"rgb("+D+")"});return B}),fontStretch:j(function(B){if(typeof B=="number"){return B}if(/%$/.test(B)){return parseFloat(B)/100}return{"ultra-condensed":0.5,"extra-condensed":0.625,condensed:0.75,"semi-condensed":0.875,"semi-expanded":1.125,expanded:1.25,"extra-expanded":1.5,"ultra-expanded":2}[B]||1}),getStyle:function(C){var B=document.defaultView;if(B&&B.getComputedStyle){return new a(B.getComputedStyle(C,null))}if(C.currentStyle){return new a(C.currentStyle)}return new a(C.style)},gradient:j(function(F){var G={id:F,type:F.match(/^-([a-z]+)-gradient\(/)[1],stops:[]},C=F.substr(F.indexOf("(")).match(/([\d.]+=)?(#[a-f0-9]+|[a-z]+\(.*?\)|[a-z]+)/ig);for(var E=0,B=C.length,D;E<B;++E){D=C[E].split("=",2).reverse();G.stops.push([D[1]||E/(B-1),D[0]])}return G}),quotedList:j(function(E){var D=[],C=/\s*((["'])([\s\S]*?[^\\])\2|[^,]+)\s*/g,B;while(B=C.exec(E)){D.push(B[3]||B[1])}return D}),recognizesMedia:j(function(G){var E=document.createElement("style"),D,C,B;E.type="text/css";E.media=G;try{E.appendChild(document.createTextNode("/**/"))}catch(F){}C=g("head")[0];C.insertBefore(E,C.firstChild);D=(E.sheet||E.styleSheet);B=D&&!D.disabled;C.removeChild(E);return B}),removeClass:function(D,C){var B=RegExp("(?:^|\\s+)"+C+"(?=\\s|$)","g");D.className=D.className.replace(B,"");return D},supports:function(D,C){var B=document.createElement("span").style;if(B[D]===undefined){return false}B[D]=C;return B[D]===C},textAlign:function(E,D,B,C){if(D.get("textAlign")=="right"){if(B>0){E=" "+E}}else{if(B<C-1){E+=" "}}return E},textShadow:j(function(F){if(F=="none"){return null}var E=[],G={},B,C=0;var D=/(#[a-f0-9]+|[a-z]+\(.*?\)|[a-z]+)|(-?[\d.]+[a-z%]*)|,/ig;while(B=D.exec(F)){if(B[0]==","){E.push(G);G={};C=0}else{if(B[1]){G.color=B[1]}else{G[["offX","offY","blur"][C++]]=B[2]}}}E.push(G);return E}),textTransform:(function(){var B={uppercase:function(C){return C.toUpperCase()},lowercase:function(C){return C.toLowerCase()},capitalize:function(C){return C.replace(/\b./g,function(D){return D.toUpperCase()})}};return function(E,D){var C=B[D.get("textTransform")];return C?C(E):E}})(),whiteSpace:(function(){var D={inline:1,"inline-block":1,"run-in":1};var C=/^\s+/,B=/\s+$/;return function(H,F,G,E){if(E){if(E.nodeName.toLowerCase()=="br"){H=H.replace(C,"")}}if(D[F.get("display")]){return H}if(!G.previousSibling){H=H.replace(C,"")}if(!G.nextSibling){H=H.replace(B,"")}return H}})()};n.ready=(function(){var B=!n.recognizesMedia("all"),E=false;var D=[],H=function(){B=true;for(var K;K=D.shift();K()){}};var I=g("link"),J=g("style");function C(K){return K.disabled||G(K.sheet,K.media||"screen")}function G(M,P){if(!n.recognizesMedia(P||"all")){return true}if(!M||M.disabled){return false}try{var Q=M.cssRules,O;if(Q){search:for(var L=0,K=Q.length;O=Q[L],L<K;++L){switch(O.type){case 2:break;case 3:if(!G(O.styleSheet,O.media.mediaText)){return false}break;default:break search}}}}catch(N){}return true}function F(){if(document.createStyleSheet){return true}var L,K;for(K=0;L=I[K];++K){if(L.rel.toLowerCase()=="stylesheet"&&!C(L)){return false}}for(K=0;L=J[K];++K){if(!C(L)){return false}}return true}x.ready(function(){if(!E){E=n.getStyle(document.body).isUsable()}if(B||(E&&F())){H()}else{setTimeout(arguments.callee,10)}});return function(K){if(B){K()}else{D.push(K)}}})();function s(D){var C=this.face=D.face,B={"\u0020":1,"\u00a0":1,"\u3000":1};this.glyphs=D.glyphs;this.w=D.w;this.baseSize=parseInt(C["units-per-em"],10);this.family=C["font-family"].toLowerCase();this.weight=C["font-weight"];this.style=C["font-style"]||"normal";this.viewBox=(function(){var F=C.bbox.split(/\s+/);var E={minX:parseInt(F[0],10),minY:parseInt(F[1],10),maxX:parseInt(F[2],10),maxY:parseInt(F[3],10)};E.width=E.maxX-E.minX;E.height=E.maxY-E.minY;E.toString=function(){return[this.minX,this.minY,this.width,this.height].join(" ")};return E})();this.ascent=-parseInt(C.ascent,10);this.descent=-parseInt(C.descent,10);this.height=-this.ascent+this.descent;this.spacing=function(L,N,E){var O=this.glyphs,M,K,G,P=[],F=0,J=-1,I=-1,H;while(H=L[++J]){M=O[H]||this.missingGlyph;if(!M){continue}if(K){F-=G=K[H]||0;P[I]-=G}F+=P[++I]=~~(M.w||this.w)+N+(B[H]?E:0);K=M.k}P.total=F;return P}}function f(){var C={},B={oblique:"italic",italic:"oblique"};this.add=function(D){(C[D.style]||(C[D.style]={}))[D.weight]=D};this.get=function(H,I){var G=C[H]||C[B[H]]||C.normal||C.italic||C.oblique;if(!G){return null}I={normal:400,bold:700}[I]||parseInt(I,10);if(G[I]){return G[I]}var E={1:1,99:0}[I%100],K=[],F,D;if(E===undefined){E=I>400}if(I==500){I=400}for(var J in G){if(!k(G,J)){continue}J=parseInt(J,10);if(!F||J<F){F=J}if(!D||J>D){D=J}K.push(J)}if(I<F){I=F}if(I>D){I=D}K.sort(function(M,L){return(E?(M>=I&&L>=I)?M<L:M>L:(M<=I&&L<=I)?M>L:M<L)?-1:1});return G[K[0]]}}function r(){function D(F,G){if(F.contains){return F.contains(G)}return F.compareDocumentPosition(G)&16}function B(G){var F=G.relatedTarget;if(!F||D(this,F)){return}C(this,G.type=="mouseover")}function E(F){C(this,F.type=="mouseenter")}function C(F,G){setTimeout(function(){var H=d.get(F).options;m.replace(F,G?h(H,H.hover):H,true)},10)}this.attach=function(F){if(F.onmouseenter===undefined){q(F,"mouseover",B);q(F,"mouseout",B)}else{q(F,"mouseenter",E);q(F,"mouseleave",E)}}}function u(){var C=[],D={};function B(H){var E=[],G;for(var F=0;G=H[F];++F){E[F]=C[D[G]]}return E}this.add=function(F,E){D[F]=C.push(E)-1};this.repeat=function(){var E=arguments.length?B(arguments):C,F;for(var G=0;F=E[G++];){m.replace(F[0],F[1],true)}}}function A(){var D={},B=0;function C(E){return E.cufid||(E.cufid=++B)}this.get=function(E){var F=C(E);return D[F]||(D[F]={})}}function a(B){var D={},C={};this.extend=function(E){for(var F in E){if(k(E,F)){D[F]=E[F]}}return this};this.get=function(E){return D[E]!=undefined?D[E]:B[E]};this.getSize=function(F,E){return C[F]||(C[F]=new n.Size(this.get(F),E))};this.isUsable=function(){return !!B}}function q(C,B,D){if(C.addEventListener){C.addEventListener(B,D,false)}else{if(C.attachEvent){C.attachEvent("on"+B,function(){return D.call(C,window.event)})}}}function v(C,B){var D=d.get(C);if(D.options){return C}if(B.hover&&B.hoverables[C.nodeName.toLowerCase()]){b.attach(C)}D.options=B;return C}function j(B){var C={};return function(D){if(!k(C,D)){C[D]=B.apply(null,arguments)}return C[D]}}function c(F,E){var B=n.quotedList(E.get("fontFamily").toLowerCase()),D;for(var C=0;D=B[C];++C){if(i[D]){return i[D].get(E.get("fontStyle"),E.get("fontWeight"))}}return null}function g(B){return document.getElementsByTagName(B)}function k(C,B){return C.hasOwnProperty(B)}function h(){var C={},B,F;for(var E=0,D=arguments.length;B=arguments[E],E<D;++E){for(F in B){if(k(B,F)){C[F]=B[F]}}}return C}function o(E,M,C,N,F,D){var K=document.createDocumentFragment(),H;if(M===""){return K}var L=N.separate;var I=M.split(p[L]),B=(L=="words");if(B&&t){if(/^\s/.test(M)){I.unshift("")}if(/\s$/.test(M)){I.push("")}}for(var J=0,G=I.length;J<G;++J){H=z[N.engine](E,B?n.textAlign(I[J],C,J,G):I[J],C,N,F,D,J<G-1);if(H){K.appendChild(H)}}return K}function l(D,M){var C=D.nodeName.toLowerCase();if(M.ignore[C]){return}var E=!M.textless[C];var B=n.getStyle(v(D,M)).extend(M);var F=c(D,B),G,K,I,H,L,J;if(!F){return}for(G=D.firstChild;G;G=I){K=G.nodeType;I=G.nextSibling;if(E&&K==3){if(H){H.appendData(G.data);D.removeChild(G)}else{H=G}if(I){continue}}if(H){D.replaceChild(o(F,n.whiteSpace(H.data,B,H,J),B,M,G,D),H);H=null}if(K==1){if(G.firstChild){if(G.nodeName.toLowerCase()=="cufon"){z[M.engine](F,null,B,M,G,D)}else{arguments.callee(G,M)}}J=G}}}var t=" ".split(/\s+/).length==0;var d=new A();var b=new r();var y=new u();var e=false;var z={},i={},w={autoDetect:false,engine:null,forceHitArea:false,hover:false,hoverables:{a:true},ignore:{applet:1,canvas:1,col:1,colgroup:1,head:1,iframe:1,map:1,optgroup:1,option:1,script:1,select:1,style:1,textarea:1,title:1,pre:1},printable:true,selector:(window.Sizzle||(window.jQuery&&function(B){return jQuery(B)})||(window.dojo&&dojo.query)||(window.Ext&&Ext.query)||(window.YAHOO&&YAHOO.util&&YAHOO.util.Selector&&YAHOO.util.Selector.query)||(window.$$&&function(B){return $$(B)})||(window.$&&function(B){return $(B)})||(document.querySelectorAll&&function(B){return document.querySelectorAll(B)})||g),separate:"words",textless:{dl:1,html:1,ol:1,table:1,tbody:1,thead:1,tfoot:1,tr:1,ul:1},textShadow:"none"};var p={words:/\s/.test("\u00a0")?/[^\S\u00a0]+/:/\s+/,characters:"",none:/^/};m.now=function(){x.ready();return m};m.refresh=function(){y.repeat.apply(y,arguments);return m};m.registerEngine=function(C,B){if(!B){return m}z[C]=B;return m.set("engine",C)};m.registerFont=function(D){if(!D){return m}var B=new s(D),C=B.family;if(!i[C]){i[C]=new f()}i[C].add(B);return m.set("fontFamily",'"'+C+'"')};m.replace=function(D,C,B){C=h(w,C);if(!C.engine){return m}if(!e){n.addClass(x.root(),"cufon-active cufon-loading");n.ready(function(){n.addClass(n.removeClass(x.root(),"cufon-loading"),"cufon-ready")});e=true}if(C.hover){C.forceHitArea=true}if(C.autoDetect){delete C.fontFamily}if(typeof C.textShadow=="string"){C.textShadow=n.textShadow(C.textShadow)}if(typeof C.color=="string"&&/^-/.test(C.color)){C.textGradient=n.gradient(C.color)}else{delete C.textGradient}if(!B){y.add(D,arguments)}if(D.nodeType||typeof D=="string"){D=[D]}n.ready(function(){for(var F=0,E=D.length;F<E;++F){var G=D[F];if(typeof G=="string"){m.replace(C.selector(G),C,true)}else{l(G,C)}}});return m};m.set=function(B,C){w[B]=C;return m};return m})();Cufon.registerEngine("vml",(function(){var e=document.namespaces;if(!e){return}e.add("cvml","urn:schemas-microsoft-com:vml");e=null;var b=document.createElement("cvml:shape");b.style.behavior="url(#default#VML)";if(!b.coordsize){return}b=null;var h=(document.documentMode||0)<8;document.write(('<style type="text/css">cufoncanvas{text-indent:0;}@media screen{cvml\\:shape,cvml\\:rect,cvml\\:fill,cvml\\:shadow{behavior:url(#default#VML);display:block;antialias:true;position:absolute;}cufoncanvas{position:absolute;text-align:left;}cufon{display:inline-block;position:relative;vertical-align:'+(h?"middle":"text-bottom")+";}cufon cufontext{position:absolute;left:-10000in;font-size:1px;}a cufon{cursor:pointer}}@media print{cufon cufoncanvas{display:none;}}</style>").replace(/;/g,"!important;"));function c(i,j){return a(i,/(?:em|ex|%)$|^[a-z-]+$/i.test(j)?"1em":j)}function a(l,m){if(m==="0"){return 0}if(/px$/i.test(m)){return parseFloat(m)}var k=l.style.left,j=l.runtimeStyle.left;l.runtimeStyle.left=l.currentStyle.left;l.style.left=m.replace("%","em");var i=l.style.pixelLeft;l.style.left=k;l.runtimeStyle.left=j;return i}function f(l,k,j,n){var i="computed"+n,m=k[i];if(isNaN(m)){m=k.get(n);k[i]=m=(m=="normal")?0:~~j.convertFrom(a(l,m))}return m}var g={};function d(p){var q=p.id;if(!g[q]){var n=p.stops,o=document.createElement("cvml:fill"),i=[];o.type="gradient";o.angle=180;o.focus="0";o.method="sigma";o.color=n[0][1];for(var m=1,l=n.length-1;m<l;++m){i.push(n[m][0]*100+"% "+n[m][1])}o.colors=i.join(",");o.color2=n[l][1];g[q]=o}return g[q]}return function(ac,G,Y,C,K,ad,W){var n=(G===null);if(n){G=K.alt}var I=ac.viewBox;var p=Y.computedFontSize||(Y.computedFontSize=new Cufon.CSS.Size(c(ad,Y.get("fontSize"))+"px",ac.baseSize));var y,q;if(n){y=K;q=K.firstChild}else{y=document.createElement("cufon");y.className="cufon cufon-vml";y.alt=G;q=document.createElement("cufoncanvas");y.appendChild(q);if(C.printable){var Z=document.createElement("cufontext");Z.appendChild(document.createTextNode(G));y.appendChild(Z)}if(!W){y.appendChild(document.createElement("cvml:shape"))}}var ai=y.style;var R=q.style;var l=p.convert(I.height),af=Math.ceil(l);var V=af/l;var P=V*Cufon.CSS.fontStretch(Y.get("fontStretch"));var U=I.minX,T=I.minY;R.height=af;R.top=Math.round(p.convert(T-ac.ascent));R.left=Math.round(p.convert(U));ai.height=p.convert(ac.height)+"px";var F=Y.get("color");var ag=Cufon.CSS.textTransform(G,Y).split("");var L=ac.spacing(ag,f(ad,Y,p,"letterSpacing"),f(ad,Y,p,"wordSpacing"));if(!L.length){return null}var k=L.total;var x=-U+k+(I.width-L[L.length-1]);var ah=p.convert(x*P),X=Math.round(ah);var O=x+","+I.height,m;var J="r"+O+"ns";var u=C.textGradient&&d(C.textGradient);var o=ac.glyphs,S=0;var H=C.textShadow;var ab=-1,aa=0,w;while(w=ag[++ab]){var D=o[ag[ab]]||ac.missingGlyph,v;if(!D){continue}if(n){v=q.childNodes[aa];while(v.firstChild){v.removeChild(v.firstChild)}}else{v=document.createElement("cvml:shape");q.appendChild(v)}v.stroked="f";v.coordsize=O;v.coordorigin=m=(U-S)+","+T;v.path=(D.d?"m"+D.d+"xe":"")+"m"+m+J;v.fillcolor=F;if(u){v.appendChild(u.cloneNode(false))}var ae=v.style;ae.width=X;ae.height=af;if(H){var s=H[0],r=H[1];var B=Cufon.CSS.color(s.color),z;var N=document.createElement("cvml:shadow");N.on="t";N.color=B.color;N.offset=s.offX+","+s.offY;if(r){z=Cufon.CSS.color(r.color);N.type="double";N.color2=z.color;N.offset2=r.offX+","+r.offY}N.opacity=B.opacity||(z&&z.opacity)||1;v.appendChild(N)}S+=L[aa++]}var M=v.nextSibling,t,A;if(C.forceHitArea){if(!M){M=document.createElement("cvml:rect");M.stroked="f";M.className="cufon-vml-cover";t=document.createElement("cvml:fill");t.opacity=0;M.appendChild(t);q.appendChild(M)}A=M.style;A.width=X;A.height=af}else{if(M){q.removeChild(M)}}ai.width=Math.max(Math.ceil(p.convert(k*P)),0);if(h){var Q=Y.computedYAdjust;if(Q===undefined){var E=Y.get("lineHeight");if(E=="normal"){E="1em"}else{if(!isNaN(E)){E+="em"}}Y.computedYAdjust=Q=0.5*(a(ad,E)-parseFloat(ai.height))}if(Q){ai.marginTop=Math.ceil(Q)+"px";ai.marginBottom=Q+"px"}}return y}})());Cufon.registerEngine("canvas",(function(){var b=document.createElement("canvas");if(!b||!b.getContext||!b.getContext.apply){return}b=null;var a=Cufon.CSS.supports("display","inline-block");var e=!a&&(document.compatMode=="BackCompat"||/frameset|transitional/i.test(document.doctype.publicId));var f=document.createElement("style");f.type="text/css";f.appendChild(document.createTextNode(("cufon{text-indent:0;}@media screen,projection{cufon{display:inline;display:inline-block;position:relative;vertical-align:middle;"+(e?"":"font-size:1px;line-height:1px;")+"}cufon cufontext{display:-moz-inline-box;display:inline-block;width:0;height:0;overflow:hidden;text-indent:-10000in;}"+(a?"cufon canvas{position:relative;}":"cufon canvas{position:absolute;}")+"}@media print{cufon{padding:0;}cufon canvas{display:none;}}").replace(/;/g,"!important;")));document.getElementsByTagName("head")[0].appendChild(f);function d(p,h){var n=0,m=0;var g=[],o=/([mrvxe])([^a-z]*)/g,k;generate:for(var j=0;k=o.exec(p);++j){var l=k[2].split(",");switch(k[1]){case"v":g[j]={m:"bezierCurveTo",a:[n+~~l[0],m+~~l[1],n+~~l[2],m+~~l[3],n+=~~l[4],m+=~~l[5]]};break;case"r":g[j]={m:"lineTo",a:[n+=~~l[0],m+=~~l[1]]};break;case"m":g[j]={m:"moveTo",a:[n=~~l[0],m=~~l[1]]};break;case"x":g[j]={m:"closePath"};break;case"e":break generate}h[g[j].m].apply(h,g[j].a)}return g}function c(m,k){for(var j=0,h=m.length;j<h;++j){var g=m[j];k[g.m].apply(k,g.a)}}return function(V,w,P,t,C,W){var k=(w===null);if(k){w=C.getAttribute("alt")}var A=V.viewBox;var m=P.getSize("fontSize",V.baseSize);var B=0,O=0,N=0,u=0;var z=t.textShadow,L=[];if(z){for(var U=z.length;U--;){var F=z[U];var K=m.convertFrom(parseFloat(F.offX));var I=m.convertFrom(parseFloat(F.offY));L[U]=[K,I];if(I<B){B=I}if(K>O){O=K}if(I>N){N=I}if(K<u){u=K}}}var Z=Cufon.CSS.textTransform(w,P).split("");var E=V.spacing(Z,~~m.convertFrom(parseFloat(P.get("letterSpacing"))||0),~~m.convertFrom(parseFloat(P.get("wordSpacing"))||0));if(!E.length){return null}var h=E.total;O+=A.width-E[E.length-1];u+=A.minX;var s,n;if(k){s=C;n=C.firstChild}else{s=document.createElement("cufon");s.className="cufon cufon-canvas";s.setAttribute("alt",w);n=document.createElement("canvas");s.appendChild(n);if(t.printable){var S=document.createElement("cufontext");S.appendChild(document.createTextNode(w));s.appendChild(S)}}var aa=s.style;var H=n.style;var j=m.convert(A.height);var Y=Math.ceil(j);var M=Y/j;var G=M*Cufon.CSS.fontStretch(P.get("fontStretch"));var J=h*G;var Q=Math.ceil(m.convert(J+O-u));var o=Math.ceil(m.convert(A.height-B+N));n.width=Q;n.height=o;H.width=Q+"px";H.height=o+"px";B+=A.minY;H.top=Math.round(m.convert(B-V.ascent))+"px";H.left=Math.round(m.convert(u))+"px";var r=Math.max(Math.ceil(m.convert(J)),0)+"px";if(a){aa.width=r;aa.height=m.convert(V.height)+"px"}else{aa.paddingLeft=r;aa.paddingBottom=(m.convert(V.height)-1)+"px"}var X=n.getContext("2d"),D=j/A.height;X.scale(D,D*M);X.translate(-u,-B);X.save();function T(){var x=V.glyphs,ab,l=-1,g=-1,y;X.scale(G,1);while(y=Z[++l]){var ab=x[Z[l]]||V.missingGlyph;if(!ab){continue}if(ab.d){X.beginPath();if(ab.code){c(ab.code,X)}else{ab.code=d("m"+ab.d,X)}X.fill()}X.translate(E[++g],0)}X.restore()}if(z){for(var U=z.length;U--;){var F=z[U];X.save();X.fillStyle=F.color;X.translate.apply(X,L[U]);T()}}var q=t.textGradient;if(q){var v=q.stops,p=X.createLinearGradient(0,A.minY,0,A.maxY);for(var U=0,R=v.length;U<R;++U){p.addColorStop.apply(p,v[U])}X.fillStyle=p}else{X.fillStyle=P.get("color")}T();return s}})());
/*!
 * The following copyright notice may not be removed under any circumstances.
 * 
 * Copyright:
 * (URW)++,Copyright 2006 by (URW)++ Design & Development
 */
Cufon.registerFont({"w":272,"face":{"font-family":"sma futura global demibold","font-weight":700,"font-stretch":"normal","font-style":"normal","units-per-em":480,"panose-1":"0 0 0 0 0 0 0 0 0 0","ascent":375,"descent":-105,"bbox":"-20.126 -445 487.309 112.17","underline-thickness":"23.9062","underline-position":"-60.4688","unicode-range":"U+0020-2122"},"glyphs":{" ":{"w":120},"!":{"d":"22,-32v0,-20,19,-37,38,-37v48,-1,49,75,0,75v-21,0,-38,-18,-38,-38xm30,-92r0,-228r60,0r0,228r-60,0","w":120},"\"":{"d":"28,-188r-9,-132r61,0r-9,132r-43,0xm118,-188r-9,-132r60,0r-9,132r-42,0","w":188},"#":{"d":"256,-233r0,45r-50,0r-6,49r45,0r0,45r-50,0r-13,99r-45,-6r12,-93r-51,0r-12,99r-46,-6r12,-93r-46,0r0,-45r52,0r6,-49r-46,0r0,-45r52,0r11,-92r45,6r-11,86r51,0r11,-92r45,6r-11,86r45,0xm160,-188r-50,0r-6,49r50,0","w":261},"$":{"d":"73,-169v-55,-45,-18,-150,53,-150r0,-46r29,0r0,46v36,5,52,14,74,36r-31,40v-23,-34,-86,-37,-93,7v3,42,92,49,110,76v55,54,11,151,-60,159r0,48r-29,0r0,-46v-50,-4,-79,-24,-104,-58r36,-37v21,28,45,42,72,42v39,0,65,-49,31,-72v-19,-13,-80,-35,-88,-45"},"%":{"d":"14,-249v0,-42,37,-75,82,-75v45,0,81,31,81,75v0,43,-37,77,-82,77v-44,0,-81,-33,-81,-77xm137,-248v0,-23,-19,-42,-41,-42v-22,0,-42,20,-42,41v0,54,83,55,83,1xm268,-331r25,15r-190,329r-25,-15xm195,-72v0,-42,36,-74,82,-74v45,0,80,33,81,75v0,42,-35,76,-82,76v-46,0,-81,-31,-81,-77xm318,-71v0,-23,-19,-41,-41,-41v-23,0,-42,19,-42,41v0,53,83,53,83,0","w":372},"&":{"d":"157,-327v49,0,87,33,87,77v0,29,-20,55,-59,78r53,61v16,-16,29,-30,40,-44r36,36v-7,10,-21,25,-41,46r65,73r-78,0r-31,-36v-36,29,-70,43,-103,43v-55,0,-100,-37,-100,-92v0,-51,36,-73,76,-96v-22,-24,-33,-47,-33,-67v0,-44,37,-79,88,-79xm88,-92v8,52,70,57,106,17r-60,-70v-21,13,-44,30,-46,53xm160,-283v-32,0,-42,37,-20,59v3,4,8,10,16,19v18,-12,35,-24,36,-46v1,-18,-14,-32,-32,-32","w":340},"'":{"d":"28,-188r-9,-132r61,0r-9,132r-43,0","w":98},"(":{"d":"80,82v-64,-117,-62,-334,0,-450r46,26v-52,105,-52,291,0,398","w":153},")":{"d":"74,-368v62,118,62,334,0,450r-47,-26v52,-104,52,-292,0,-398","w":153},"*":{"d":"124,-299r-10,-61r44,0r-10,61r55,-28r14,42r-61,9r43,44r-35,26r-28,-55r-28,55r-36,-26r44,-43r-61,-10r14,-42"},"+":{"d":"29,-179r88,0r0,-88r38,0r0,88r88,0r0,38r-88,0r0,88r-38,0r0,-88r-88,0r0,-38"},",":{"d":"53,-66r53,6r-67,128r-37,-5","w":120},"-":{"d":"0,-135r108,0r0,49r-108,0r0,-49","w":107},".":{"d":"22,-32v0,-20,19,-37,38,-37v48,-1,49,75,0,75v-21,0,-38,-18,-38,-38","w":120},"\/":{"d":"167,-368r40,16r-181,434r-40,-16","w":223},"0":{"d":"12,-162v0,-87,47,-166,124,-166v77,0,126,79,124,168v-3,91,-37,168,-124,168v-79,0,-124,-81,-124,-170xm136,-47v85,0,84,-226,0,-226v-45,0,-62,63,-62,112v0,51,16,114,62,114"},"1":{"d":"109,-266r-46,0r0,-54r108,0r0,320r-62,0r0,-266"},"2":{"d":"126,-328v86,0,142,87,96,162v-23,38,-97,112,-97,112r116,0r0,54r-233,0v0,0,109,-124,149,-174v31,-39,22,-99,-29,-99v-28,0,-49,19,-48,52r-67,0v5,-64,48,-107,113,-107"},"3":{"d":"179,-98v0,-31,-27,-56,-62,-49r0,-45r9,0v27,2,44,-19,44,-44v1,-24,-18,-42,-43,-42v-25,0,-39,13,-43,41r-59,0v7,-58,45,-91,106,-91v56,0,98,34,98,88v-1,35,-12,54,-37,68v33,14,49,41,49,79v0,110,-172,136,-215,47v-7,-15,-13,-29,-14,-46r62,0v3,29,24,45,53,45v30,0,52,-22,52,-51"},"4":{"d":"225,-107r38,0r0,50r-38,0r0,57r-58,0r0,-57r-157,0r0,-27r159,-242r56,0r0,219xm167,-107r0,-127r-83,127r83,0"},"5":{"d":"178,-108v3,-62,-89,-84,-135,-44r-3,0r38,-168r148,0r0,54r-106,0r-12,50v80,-11,128,37,132,110v6,113,-160,151,-228,72r21,-53v38,56,142,55,145,-21"},"6":{"d":"135,8v-68,0,-120,-45,-120,-110v0,-32,13,-65,40,-101r97,-131r44,34r-76,97v72,-30,137,28,137,98v0,66,-50,113,-122,113xm195,-100v0,-33,-28,-61,-59,-61v-32,0,-59,29,-59,60v0,33,25,60,59,60v31,0,59,-28,59,-59"},"7":{"d":"171,-266r-149,0r0,-54r247,0r-195,329r-50,-30"},"8":{"d":"138,8v-60,0,-113,-36,-113,-95v0,-38,19,-65,57,-80v-87,-38,-40,-173,55,-161v93,-12,141,124,53,161v38,15,57,41,57,79v0,55,-50,96,-109,96xm181,-238v0,-25,-21,-45,-45,-45v-23,0,-44,22,-44,45v0,24,21,45,44,45v24,0,45,-21,45,-45xm185,-92v0,-65,-98,-64,-98,-1v0,27,22,52,49,52v26,0,49,-24,49,-51"},"9":{"d":"137,-328v68,0,120,45,120,109v0,32,-13,66,-40,102r-97,130r-44,-33r76,-97v-72,31,-137,-29,-137,-98v0,-65,52,-113,122,-113xm195,-219v0,-34,-27,-60,-59,-60v-31,0,-59,28,-59,59v0,32,26,61,59,61v34,0,59,-28,59,-60"},":":{"d":"22,-32v0,-20,19,-37,38,-37v48,-1,49,75,0,75v-21,0,-38,-18,-38,-38xm22,-178v0,-20,19,-37,38,-37v49,-1,49,75,0,75v-21,0,-38,-18,-38,-38","w":120},";":{"d":"50,-66r54,6r-68,128r-37,-5xm75,-139v-48,0,-48,-76,0,-76v21,0,38,17,38,38v0,21,-17,38,-38,38","w":120},"<":{"d":"224,-292r0,61r-142,71r142,71r0,61r-208,-106r0,-53","w":240},"=":{"d":"29,-216r214,0r0,39r-214,0r0,-39xm29,-143r214,0r0,39r-214,0r0,-39"},">":{"d":"16,-28r0,-62r142,-70r-142,-71r0,-61r208,106r0,52","w":240},"?":{"d":"215,-236v0,45,-35,79,-79,88r0,41r-59,0r0,-84v40,6,77,-11,77,-47v1,-20,-17,-37,-37,-37v-21,-1,-36,18,-34,40r-62,0r0,-6v2,-50,43,-85,98,-85v51,0,96,40,96,90xm108,6v-49,2,-49,-77,-1,-75v48,-3,50,77,1,75","w":234},"@":{"d":"94,-154v-9,-73,86,-124,139,-74r2,-16r40,0v0,0,-12,85,-14,131v0,8,3,13,8,13v30,-7,44,-46,45,-80v2,-67,-57,-113,-123,-113v-73,0,-132,61,-132,132v0,76,57,131,136,131v37,0,79,-13,106,-27r14,35v-39,20,-80,29,-120,29v-108,0,-173,-66,-178,-167v-4,-92,80,-169,174,-167v90,2,159,55,159,145v0,56,-29,118,-85,118v-18,0,-30,-9,-37,-25v-50,57,-142,10,-134,-65xm175,-105v57,5,75,-103,9,-101v-53,-5,-63,99,-9,101","w":366},"A":{"d":"227,-68r-131,0r-29,68r-66,0r138,-327r47,0r135,327r-67,0xm207,-118r-45,-115r-46,115r91,0","w":321},"B":{"d":"253,-90v0,57,-44,90,-108,90r-108,0r0,-320r79,0v71,-1,107,22,107,85v0,33,-10,51,-35,64v43,7,65,37,65,81xm99,-187r18,0v32,0,48,-13,48,-41v0,-28,-15,-41,-47,-41r-19,0r0,82xm188,-95v0,-34,-25,-45,-65,-44r-24,0r0,88r27,0v42,0,62,-14,62,-44","w":273},"C":{"d":"21,-158v0,-126,127,-206,247,-150r0,74v-64,-75,-183,-24,-183,75v0,96,121,148,183,74r0,74v-120,52,-247,-22,-247,-147","w":288},"D":{"d":"300,-161v0,97,-75,165,-172,161r-91,0r0,-320r91,0v100,2,172,58,172,159xm236,-160v0,-64,-47,-110,-120,-106r-17,0r0,212r17,0v77,1,120,-35,120,-106","w":321},"E":{"d":"214,-266r-115,0r0,71r111,0r0,54r-111,0r0,87r115,0r0,54r-177,0r0,-320r177,0r0,54","w":237},"F":{"d":"206,-266r-107,0r0,71r101,0r0,54r-101,0r0,141r-62,0r0,-320r169,0r0,54","w":224},"G":{"d":"85,-159v-14,107,166,160,189,42r-75,0r0,-55r146,0v1,115,-52,174,-156,180v-95,5,-168,-71,-168,-167v0,-162,232,-232,307,-93r-54,29v-49,-90,-199,-40,-189,64","w":365},"H":{"d":"99,-196r136,0r0,-124r62,0r0,320r-62,0r0,-142r-136,0r0,142r-62,0r0,-320r62,0r0,124","w":333},"I":{"d":"99,-320r0,320r-62,0r0,-320r62,0","w":135},"J":{"d":"56,-50v31,0,32,-24,32,-64r0,-206r62,0r0,216v1,70,-27,112,-88,112v-28,0,-53,-11,-75,-31r38,-45v8,12,18,18,31,18","w":187},"K":{"d":"99,-185r118,-135r78,0r-135,148r143,172r-82,0r-114,-144r-8,8r0,136r-62,0r0,-320r62,0r0,135","w":305},"L":{"d":"99,-320r0,266r99,0r0,54r-161,0r0,-320r62,0","w":204},"M":{"d":"20,0r59,-326r43,0r87,210r91,-210r43,0r54,326r-63,0r-29,-197r-88,201r-17,0r-85,-201r-33,197r-62,0","w":416},"N":{"d":"37,0r0,-327r43,0r195,222r0,-215r62,0r0,326r-43,0r-195,-222r0,216r-62,0","w":374},"O":{"d":"21,-162v-3,-88,78,-165,171,-165v92,0,175,75,171,167v-4,100,-71,167,-173,167v-100,0,-166,-66,-169,-169xm298,-160v0,-59,-50,-110,-107,-110v-57,0,-106,53,-106,109v0,59,48,111,107,111v57,0,106,-53,106,-110","w":383},"P":{"d":"247,-218v0,62,-39,101,-107,99r-41,0r0,119r-62,0r0,-320r93,0v78,-3,117,35,117,102xm183,-219v0,-36,-21,-48,-62,-47r-22,0r0,93r26,0v39,0,58,-15,58,-46","w":256},"Q":{"d":"193,-327v143,0,230,178,127,282r52,51r-63,6r-26,-29v-115,69,-262,-15,-262,-143v0,-92,77,-167,172,-167xm85,-159v0,77,81,137,152,96r-62,-61r65,-4r36,36v61,-67,4,-178,-83,-178v-59,0,-108,48,-108,111","w":382},"R":{"d":"243,-225v0,50,-26,82,-73,90r101,135r-77,0r-87,-129r-8,0r0,129r-62,0r0,-320r93,0v71,0,113,29,113,95xm117,-173v38,1,62,-14,62,-48v0,-32,-21,-48,-61,-48r-19,0r0,96r18,0","w":276},"S":{"d":"57,-174v-55,-57,-8,-152,75,-152v35,0,67,12,94,36r-33,43v-24,-36,-91,-36,-97,10v5,41,96,47,113,72v19,16,28,38,28,67v2,63,-47,106,-111,106v-45,0,-82,-20,-110,-61r40,-39v18,54,112,60,117,-2v4,-51,-90,-53,-116,-80","w":255},"T":{"d":"137,0r-62,0r0,-266r-72,0r0,-54r206,0r0,54r-72,0r0,266","w":212},"U":{"d":"165,7v-80,0,-128,-45,-128,-131r0,-196r62,0r0,183v-4,58,19,87,66,87v47,0,67,-31,67,-87r0,-183r62,0r0,196v1,87,-47,131,-129,131","w":330},"V":{"d":"69,-320r85,215r87,-215r67,0r-138,328r-33,0r-136,-328r68,0","w":308},"W":{"d":"67,-320r72,218r78,-221r34,0r74,221r77,-218r66,0r-120,326r-44,0r-72,-209r-74,209r-44,0r-113,-326r66,0","w":468},"X":{"d":"117,-169r-96,-151r75,0r56,99r59,-99r75,0r-98,151r109,169r-73,0r-72,-117r-75,117r-74,0","w":300},"Y":{"d":"108,-146r-111,-174r74,0r69,111r68,-111r74,0r-112,174r0,146r-62,0r0,-146","w":280},"Z":{"d":"114,-54r148,0r0,54r-252,0r157,-266r-133,0r0,-54r236,0","w":280},"[":{"d":"98,-308r0,333r43,0r0,52r-100,0r0,-437r100,0r0,52r-43,0","w":166},"\\":{"d":"56,-368r181,434r-40,16r-181,-434","w":223},"]":{"d":"69,25r0,-333r-43,0r0,-52r99,0r0,437r-99,0r0,-52r43,0","w":166},"^":{"d":"67,-161r-65,0r77,-161r82,0r77,161r-65,0r-53,-111","w":240},"_":{"d":"0,22r240,0r0,56r-240,0r0,-56","w":240},"`":{"d":"45,-309r42,-27r57,72r-28,20","w":240},"a":{"d":"17,-105v0,-91,113,-151,170,-76r0,-27r58,0r0,208r-58,0r0,-27v-57,75,-170,16,-170,-78xm193,-103v0,-33,-27,-59,-58,-59v-31,-1,-58,27,-58,58v0,31,27,58,58,58v31,0,58,-26,58,-57","w":273},"b":{"d":"257,-105v0,92,-114,154,-171,78r0,27r-58,0r0,-360r58,0r0,179v58,-74,171,-17,171,76xm196,-103v0,-33,-26,-59,-58,-59v-31,-1,-58,27,-58,58v0,31,27,58,58,58v31,0,58,-28,58,-57","w":273},"c":{"d":"17,-103v0,-80,89,-140,167,-99r0,57v-39,-36,-107,-12,-107,41v0,54,69,77,107,41r0,57v-78,40,-167,-14,-167,-97","w":200},"d":{"d":"17,-105v0,-91,113,-151,170,-76r0,-179r58,0r0,360r-58,0r0,-27v-57,75,-170,16,-170,-78xm193,-103v0,-33,-27,-59,-58,-59v-31,-1,-58,27,-58,58v0,31,27,58,58,58v31,0,58,-26,58,-57","w":273},"e":{"d":"125,-215v69,-1,110,47,107,121r-156,0v-4,59,75,74,100,27r54,9v-18,43,-52,65,-102,65v-65,1,-113,-43,-111,-111v2,-67,39,-110,108,-111xm176,-131v-4,-45,-63,-55,-88,-24v-5,6,-8,14,-10,24r98,0","w":248},"f":{"d":"141,-305v-32,-19,-53,-3,-53,39r0,58r53,0r0,50r-53,0r0,158r-58,0r0,-158r-23,0r0,-50r23,0r0,-66v-6,-68,51,-103,111,-84r0,53","w":140},"g":{"d":"17,-101v-12,-94,115,-155,169,-80r0,-27r58,0r0,200v4,83,-38,116,-111,120v-57,3,-102,-34,-111,-87r63,0v6,25,22,37,49,37v33,-1,54,-20,52,-58r0,-32v-51,73,-179,22,-169,-73xm193,-103v0,-33,-27,-59,-58,-59v-31,-1,-58,27,-58,58v0,31,27,58,58,58v31,0,58,-28,58,-57"},"h":{"d":"170,-114v2,-36,-9,-51,-40,-51v-30,0,-44,20,-44,59r0,106r-58,0r0,-360r58,0r0,179v36,-60,142,-38,142,50r0,131r-58,0r0,-114","w":255},"i":{"d":"85,-208r0,208r-58,0r0,-208r58,0xm56,-260v-45,2,-46,-70,0,-70v19,0,35,16,35,35v0,19,-17,35,-35,35","w":112},"j":{"d":"85,-208r0,319r-58,0r0,-319r58,0xm56,-260v-45,2,-46,-70,0,-70v19,0,35,16,35,35v0,19,-17,35,-35,35","w":112},"k":{"d":"86,-360r0,228r78,-76r78,0r-97,91r105,117r-80,0r-78,-89r-6,6r0,83r-58,0r0,-360r58,0","w":248},"l":{"d":"86,-360r0,360r-58,0r0,-360r58,0","w":113},"m":{"d":"125,-165v-28,3,-39,21,-39,58r0,107r-58,0r0,-208r58,0r0,24v34,-43,101,-42,128,7v16,-25,39,-38,68,-38v46,1,69,28,69,80r0,135r-58,0r0,-114v2,-33,-7,-50,-34,-51v-27,0,-40,19,-40,58r0,107r-58,0r0,-110v2,-36,-8,-51,-36,-55","w":379},"n":{"d":"170,-115v2,-35,-9,-49,-40,-50v-30,0,-44,19,-44,57r0,108r-58,0r0,-208r58,0r0,26v36,-59,142,-37,142,50r0,132r-58,0r0,-115","w":255},"o":{"d":"17,-106v-1,-63,53,-109,119,-109v67,0,118,45,118,111v0,65,-51,113,-119,111v-69,-2,-118,-41,-118,-113xm194,-104v0,-32,-28,-58,-59,-58v-31,0,-58,28,-58,57v0,32,27,59,59,59v31,0,58,-27,58,-58","w":270},"p":{"d":"257,-104v0,91,-113,153,-171,77r0,138r-58,0r0,-319r58,0r0,27v56,-74,171,-16,171,77xm196,-103v0,-33,-26,-59,-58,-59v-31,-1,-58,27,-58,58v0,31,27,58,58,58v31,0,58,-28,58,-57","w":273},"q":{"d":"17,-104v0,-92,114,-152,170,-77r0,-27r58,0r0,319r-58,0r0,-138v-58,75,-170,17,-170,-77xm193,-103v0,-33,-27,-59,-58,-59v-31,-1,-58,27,-58,58v0,31,27,58,58,58v31,0,58,-26,58,-57","w":273},"r":{"d":"28,-208r58,0r0,32v18,-33,47,-47,86,-34r-8,55v-41,-19,-78,0,-78,55r0,100r-58,0r0,-208","w":172},"s":{"d":"49,-106v-47,-37,-9,-110,54,-110v26,0,47,7,67,22r-28,34v-19,-21,-68,-16,-53,14v33,21,92,25,92,78v0,82,-124,99,-166,40r30,-36v16,17,32,25,49,25v23,0,38,-28,17,-40v-13,-6,-56,-20,-62,-27","w":194},"t":{"d":"86,-158r0,158r-58,0r0,-158r-23,0r0,-50r23,0r0,-71r58,0r0,71r42,0r0,50r-42,0","w":129},"u":{"d":"128,7v-60,0,-100,-27,-100,-87r0,-128r58,0r0,118v0,32,14,47,42,47v28,0,43,-15,43,-47r0,-118r58,0r0,128v0,59,-41,87,-101,87","w":256},"v":{"d":"66,-208r54,118r55,-118r65,0r-107,212r-26,0r-106,-212r65,0","w":240},"w":{"d":"66,-208r54,120r57,-125r25,0r57,127r56,-122r64,0r-107,212r-27,0r-56,-126r-55,126r-27,0r-106,-212r65,0","w":380},"x":{"d":"100,-113r-80,-95r73,0r43,54r44,-54r74,0r-82,95r97,113r-74,0r-59,-72r-61,72r-74,0","w":270},"y":{"d":"99,-31r-98,-177r67,0r63,118r59,-118r66,0r-168,319r-65,0","w":256},"z":{"d":"109,-50r110,0r0,50r-213,0r118,-158r-100,0r0,-51r202,0","w":232},"{":{"d":"95,-198v-1,31,-8,48,-29,57v19,11,29,27,29,46r0,89v0,33,5,37,35,38r0,49v0,0,-26,0,-30,1v-46,-1,-59,-21,-60,-69r0,-102v0,-14,-11,-28,-27,-30r0,-47v19,-4,27,-16,27,-39r0,-92v1,-58,27,-72,90,-65r0,49v-30,-1,-35,6,-35,41r0,74","w":151},"|":{"d":"89,-320r62,0r0,400r-62,0r0,-400","w":240},"}":{"d":"57,-84v0,-32,9,-46,29,-57v-16,-8,-29,-27,-29,-45r0,-90v1,-33,-7,-39,-35,-37r0,-50r30,0v47,0,59,21,60,69r0,101v0,14,11,28,27,30r0,47v-19,5,-27,15,-27,39r0,92v-1,58,-27,73,-90,66r0,-49r6,0v28,-3,30,-9,29,-42r0,-74","w":151},"~":{"d":"112,-298v-21,3,-24,10,-35,29r-34,-22v18,-38,29,-62,73,-67v15,-2,77,25,91,24v19,-1,26,-10,34,-25r36,21v-20,40,-33,59,-77,64v-8,4,-77,-25,-88,-24","w":319},"\u00a0":{"w":120},"\u00a1":{"d":"22,-213v0,-20,19,-37,38,-37v49,-1,49,76,0,76v-21,0,-38,-18,-38,-39xm30,-151r60,0r0,228r-60,0r0,-228","w":120},"\u00a2":{"d":"47,-160v0,-62,41,-103,98,-111r0,-36r30,0r0,38v15,2,28,5,38,10r0,59v-36,-42,-104,-17,-104,40v0,56,71,81,104,38r0,60v-14,5,-26,9,-38,10r0,40r-30,0r0,-39v-55,-5,-98,-53,-98,-109"},"\u00a3":{"d":"195,8v-38,0,-121,-55,-141,-4r-45,-8v15,-38,31,-56,70,-62v6,-17,6,-30,1,-47r-56,0r0,-44r31,0v-51,-80,8,-170,100,-170v67,0,105,43,107,111r-63,7v8,-37,-16,-63,-49,-63v-62,0,-61,75,-32,115r72,0r0,44r-58,0v4,19,2,34,-4,51v39,10,82,40,98,-6r43,9v-10,38,-33,67,-74,67"},"\u00a4":{"d":"10,-66r49,-49v-28,-41,-28,-92,1,-132r-51,-50r34,-34r50,50v41,-27,91,-29,133,-1r50,-49r33,34r-49,49v29,44,29,88,1,132r50,50r-34,34r-49,-50v-43,28,-90,30,-135,1r-50,49xm225,-181v0,-35,-31,-66,-64,-66v-34,0,-66,31,-66,66v0,34,31,65,65,65v34,0,65,-31,65,-65","w":319},"\u00a5":{"d":"90,-174r-61,0r0,-44r35,0r-60,-102r68,0r64,111r63,-111r70,0r-62,102r36,0r0,44r-63,0r-16,30r79,0r0,43r-79,0r0,101r-58,0r0,-101r-77,0r0,-43r77,0"},"\u00a6":{"d":"89,-320r62,0r0,166r-62,0r0,-166xm89,-74r62,0r0,154r-62,0r0,-154","w":240},"\u00a7":{"d":"47,-286v0,-74,98,-98,151,-58v18,14,28,36,29,67r-58,0v3,-51,-65,-49,-66,-7v0,36,74,49,97,65v56,40,45,127,-19,152v82,32,37,149,-48,149v-55,0,-90,-34,-91,-92r59,0v-8,52,69,56,69,7v0,-43,-71,-45,-94,-63v-60,-28,-52,-143,14,-155v-28,-13,-43,-34,-43,-65xm136,-102v52,0,52,-83,0,-83v-22,0,-40,19,-40,42v0,22,19,41,40,41"},"\u00a8":{"d":"70,-247v-45,2,-44,-72,0,-69v45,-2,45,71,0,69xm170,-247v-46,3,-45,-72,0,-69v44,-3,44,72,0,69","w":240},"\u00a9":{"d":"87,-159v0,-73,85,-127,158,-89r0,53r-11,-11v-38,-35,-101,-3,-101,47v0,58,82,81,112,35r0,52v-72,37,-158,-14,-158,-87xm16,-160v5,-98,68,-164,169,-167v86,-3,164,79,164,167v0,88,-77,167,-166,167v-90,0,-171,-78,-167,-167xm315,-160v0,-73,-62,-137,-130,-137v-75,0,-136,64,-136,137v0,72,62,137,134,137v72,0,132,-64,132,-137","w":364},"\u00aa":{"d":"10,-254v0,-54,68,-90,102,-46r0,-16r34,0r0,124r-34,0r0,-16v-34,45,-102,9,-102,-46xm81,-219v45,0,43,-71,0,-70v-18,0,-35,16,-35,35v0,19,16,35,35,35xm15,-174r131,0r0,27r-131,0r0,-27","w":162},"\u00ab":{"d":"164,-104r58,77r-34,25r-75,-102r75,-103r34,23xm69,-104r59,77r-34,25r-75,-102r75,-103r34,23","w":246},"\u00ac":{"d":"161,0r0,-72r-145,0r0,-56r208,0r0,128r-63,0","w":240},"\u00ad":{"d":"0,-135r108,0r0,49r-108,0r0,-49","w":107},"\u00ae":{"d":"174,-256v43,0,72,19,73,58v0,29,-15,47,-43,55r64,79r-56,0r-54,-75r0,75r-45,0r0,-192r61,0xm158,-171r8,0v23,0,35,-8,35,-25v0,-16,-11,-24,-34,-24r-9,0r0,49xm16,-160v5,-98,68,-164,169,-167v86,-3,164,79,164,167v0,88,-77,167,-166,167v-90,0,-171,-78,-167,-167xm315,-160v0,-73,-62,-137,-130,-137v-75,0,-136,64,-136,137v0,72,62,137,134,137v72,0,132,-64,132,-137","w":364},"\u00af":{"d":"43,-303r154,0r0,39r-154,0r0,-39","w":240},"\u00b0":{"d":"72,-263v-1,-34,30,-63,64,-63v36,0,64,29,64,64v0,35,-29,63,-64,63v-36,0,-64,-30,-64,-64xm136,-231v41,2,41,-65,0,-63v-41,-2,-41,65,0,63"},"\u00b1":{"d":"29,-179r88,0r0,-88r38,0r0,88r88,0r0,38r-88,0r0,85r-38,0r0,-85r-88,0r0,-38xm29,-29r214,0r0,39r-214,0r0,-39"},"\u00b2":{"d":"86,-326v37,0,69,27,68,63v0,20,-11,44,-34,68r-31,32r67,0r0,35r-143,0r90,-105v18,-22,12,-57,-17,-58v-16,-1,-26,14,-25,33r-43,0v3,-40,28,-68,68,-68","w":185},"\u00b3":{"d":"116,-186v0,-19,-16,-33,-37,-28r0,-30r7,0v15,1,25,-10,25,-24v0,-13,-12,-23,-24,-23v-14,0,-22,8,-24,24r-38,0v5,-39,26,-58,64,-58v53,0,81,66,40,94v52,28,23,109,-42,109v-38,0,-67,-25,-70,-63r40,0v2,19,13,28,31,28v16,1,28,-12,28,-29","w":185},"\u00b4":{"d":"195,-309r-71,65r-28,-20r57,-72","w":240},"\u00b5":{"d":"229,-80v4,76,-79,103,-148,78r5,113r-58,0r0,-319r58,0r0,119v-1,30,15,46,42,46v28,0,43,-15,43,-47r0,-118r58,0r0,128","w":256},"\u00b6":{"d":"80,-162v-47,2,-77,-31,-76,-77v0,-54,32,-81,96,-81r161,0r0,54r-35,0r0,310r-53,0r0,-310r-40,0r0,310r-53,0r0,-206"},"\u00b7":{"d":"22,-108v0,-20,19,-37,38,-37v21,-1,38,17,38,38v0,21,-17,38,-38,38v-21,0,-38,-18,-38,-39","w":120},"\u00b8":{"d":"169,42r-56,60r-29,-16r47,-64","w":240},"\u00b9":{"d":"74,-285r-28,0r0,-35r69,0r0,192r-41,0r0,-157","w":185},"\u00ba":{"d":"10,-255v0,-37,31,-65,71,-65v40,0,71,26,71,66v0,39,-31,66,-72,66v-40,0,-71,-26,-70,-67xm81,-219v45,2,45,-72,0,-70v-45,-3,-46,73,0,70xm17,-174r131,0r0,27r-131,0r0,-27","w":161},"\u00bb":{"d":"83,-104r-58,-80r33,-23r75,103r-75,102r-34,-25xm177,-104r-58,-80r33,-23r75,103r-75,102r-34,-25","w":246},"\u00bc":{"d":"72,-285r-28,0r0,-35r68,0r0,192r-40,0r0,-157xm298,-331r25,15r-190,329r-25,-15xm398,-66r22,0r0,33r-22,0r0,33r-38,0r0,-33r-93,0r0,-18r95,-144r36,0r0,129xm360,-66r0,-68r-44,68r44,0","w":436},"\u00bd":{"d":"72,-285r-28,0r0,-35r68,0r0,192r-40,0r0,-157xm298,-331r25,15r-190,329r-25,-15xm332,-198v37,0,67,27,69,63v1,32,-65,100,-65,100r66,0r0,35r-142,0v0,0,63,-71,89,-105v18,-23,12,-56,-16,-58v-16,-1,-28,13,-26,33r-43,0v3,-40,28,-68,68,-68","w":427},"\u00be":{"d":"113,-186v0,-19,-16,-33,-37,-28r0,-30r7,0v15,1,25,-10,25,-24v0,-13,-12,-23,-24,-23v-14,0,-22,8,-24,24r-38,0v5,-39,26,-58,64,-58v53,0,81,66,40,94v52,28,23,109,-42,109v-38,0,-67,-25,-70,-63r40,0v2,19,13,28,31,28v16,1,28,-12,28,-29xm297,-331r25,15r-191,329r-25,-15xm396,-66r22,0r0,33r-22,0r0,33r-38,0r0,-33r-93,0r0,-18r95,-144r36,0r0,129xm358,-66r0,-68r-44,68r44,0","w":434},"\u00bf":{"d":"19,-7v0,-45,35,-81,79,-89r0,-40r60,0r0,84v-37,-8,-76,11,-77,46v-1,21,15,37,36,37v22,0,38,-19,34,-40r63,0r0,6v-2,52,-44,84,-98,86v-52,2,-97,-40,-97,-90xm90,-212v0,-21,18,-38,37,-38v49,-2,49,76,0,76v-20,0,-37,-18,-37,-38","w":234},"\u00c0":{"d":"227,-68r-131,0r-29,68r-66,0r138,-327r47,0r135,327r-67,0xm207,-118r-45,-115r-46,115r91,0xm92,-404r40,-33r66,64r-26,23","w":321},"\u00c1":{"d":"227,-68r-131,0r-29,68r-66,0r138,-327r47,0r135,327r-67,0xm207,-118r-45,-115r-46,115r91,0xm233,-404r-80,54r-26,-23r66,-64","w":321},"\u00c2":{"d":"227,-68r-131,0r-29,68r-66,0r138,-327r47,0r135,327r-67,0xm207,-118r-45,-115r-46,115r91,0xm86,-378r81,-67r82,67r-30,28r-52,-43r-53,43","w":321},"\u00c3":{"d":"227,-68r-131,0r-29,68r-66,0r138,-327r47,0r135,327r-67,0xm207,-118r-45,-115r-46,115r91,0xm196,-355v-26,0,-74,-44,-84,-1r-33,0v4,-31,23,-62,51,-61v12,-2,58,19,69,19v10,0,16,-9,21,-18r33,0v-5,32,-25,61,-57,61","w":321},"\u00c4":{"d":"227,-68r-131,0r-29,68r-66,0r138,-327r47,0r135,327r-67,0xm207,-118r-45,-115r-46,115r91,0xm110,-355v-45,0,-44,-69,0,-69v19,0,35,15,35,34v0,19,-16,35,-35,35xm211,-355v-45,0,-44,-69,0,-69v19,0,35,15,35,34v0,19,-16,35,-35,35","w":321},"\u00c5":{"d":"227,-68r-131,0r-29,68r-66,0r138,-327r47,0r135,327r-67,0xm207,-118r-45,-115r-46,115r91,0xm116,-397v0,-24,21,-45,45,-45v24,0,45,21,45,45v0,24,-22,47,-45,46v-24,0,-45,-21,-45,-46xm161,-379v23,2,24,-38,0,-36v-24,-2,-23,38,0,36","w":321},"\u00c6":{"d":"228,-68r-130,0r-28,68r-67,0r138,-320r169,0r21,54r-117,0r28,71r116,0r22,55r-116,0r35,86r118,0r21,54r-183,0xm209,-118r-44,-109r-47,109r91,0","w":441},"\u00c7":{"d":"21,-158v0,-125,126,-204,247,-150r0,74v-61,-75,-183,-24,-183,75v0,96,121,147,183,74r0,74v-122,53,-247,-22,-247,-147xm214,45r-58,61r-30,-19r48,-67","w":288},"\u00c8":{"d":"214,-266r-115,0r0,71r111,0r0,54r-111,0r0,87r115,0r0,54r-177,0r0,-320r177,0r0,54xm59,-404r40,-33r66,64r-26,23","w":237},"\u00c9":{"d":"214,-266r-115,0r0,71r111,0r0,54r-111,0r0,87r115,0r0,54r-177,0r0,-320r177,0r0,54xm201,-404r-81,54r-25,-23r66,-64","w":237},"\u00ca":{"d":"214,-266r-115,0r0,71r111,0r0,54r-111,0r0,87r115,0r0,54r-177,0r0,-320r177,0r0,54xm47,-378r81,-67r82,67r-29,28r-53,-43r-52,43","w":237},"\u00cb":{"d":"214,-266r-115,0r0,71r111,0r0,54r-111,0r0,87r115,0r0,54r-177,0r0,-320r177,0r0,54xm75,-355v-46,3,-45,-72,0,-69v44,-3,44,72,0,69xm176,-355v-46,3,-45,-72,0,-69v44,-3,44,72,0,69","w":237},"\u00cc":{"d":"99,-320r0,320r-62,0r0,-320r62,0xm-4,-404r40,-33r66,64r-26,23","w":135},"\u00cd":{"d":"99,-320r0,320r-62,0r0,-320r62,0xm140,-404r-80,54r-26,-23r66,-64","w":135},"\u00ce":{"d":"99,-320r0,320r-62,0r0,-320r62,0xm-8,-378r75,-67r76,67r-29,28r-47,-43r-45,43","w":135},"\u00cf":{"d":"99,-320r0,320r-62,0r0,-320r62,0xm25,-355v-45,0,-44,-69,0,-69v19,0,35,15,35,34v0,19,-16,35,-35,35xm110,-355v-45,0,-44,-69,0,-69v19,0,35,15,35,34v0,19,-16,35,-35,35","w":135},"\u00d0":{"d":"300,-161v0,97,-75,165,-172,161r-91,0r0,-136r-27,0r0,-48r27,0r0,-136r91,0v100,2,172,58,172,159xm236,-160v0,-65,-47,-110,-120,-106r-17,0r0,82r68,0r0,48r-68,0r0,82r17,0v77,1,120,-35,120,-106","w":321},"\u00d1":{"d":"37,0r0,-327r43,0r195,222r0,-215r62,0r0,326r-43,0r-195,-222r0,216r-62,0xm222,-355v-11,2,-55,-20,-65,-19v-8,0,-14,6,-19,18r-33,0v4,-31,23,-62,51,-61v12,-2,58,19,69,19v10,0,16,-9,21,-18r33,0v-4,32,-26,62,-57,61","w":374},"\u00d2":{"d":"21,-162v-3,-88,78,-165,171,-165v92,0,175,75,171,167v-4,100,-71,167,-173,167v-100,0,-166,-66,-169,-169xm298,-160v0,-59,-50,-110,-107,-110v-57,0,-106,53,-106,109v0,59,48,111,107,111v57,0,106,-53,106,-110xm120,-404r39,-33r66,64r-25,23","w":383},"\u00d3":{"d":"21,-162v-3,-88,78,-165,171,-165v92,0,175,75,171,167v-4,100,-71,167,-173,167v-100,0,-166,-66,-169,-169xm298,-160v0,-59,-50,-110,-107,-110v-57,0,-106,53,-106,109v0,59,48,111,107,111v57,0,106,-53,106,-110xm264,-404r-80,54r-26,-23r66,-64","w":383},"\u00d4":{"d":"21,-162v-3,-88,78,-165,171,-165v92,0,175,75,171,167v-4,100,-71,167,-173,167v-100,0,-166,-66,-169,-169xm298,-160v0,-59,-50,-110,-107,-110v-57,0,-106,53,-106,109v0,59,48,111,107,111v57,0,106,-53,106,-110xm110,-378r81,-67r83,67r-30,28r-53,-43r-52,43","w":383},"\u00d5":{"d":"21,-162v-3,-88,78,-165,171,-165v92,0,175,75,171,167v-4,100,-71,167,-173,167v-100,0,-166,-66,-169,-169xm298,-160v0,-59,-50,-110,-107,-110v-57,0,-106,53,-106,109v0,59,48,111,107,111v57,0,106,-53,106,-110xm227,-355v-27,0,-74,-44,-85,-1r-33,0v4,-31,23,-62,52,-61v12,-2,58,20,69,19v10,0,15,-10,20,-18r34,0v-5,31,-26,61,-57,61","w":383},"\u00d6":{"d":"21,-162v-3,-88,78,-165,171,-165v92,0,175,75,171,167v-4,100,-71,167,-173,167v-100,0,-166,-66,-169,-169xm298,-160v0,-59,-50,-110,-107,-110v-57,0,-106,53,-106,109v0,59,48,111,107,111v57,0,106,-53,106,-110xm141,-355v-45,2,-44,-72,0,-69v45,-2,45,71,0,69xm242,-355v-45,2,-44,-72,0,-69v45,-2,45,71,0,69","w":383},"\u00d7":{"d":"69,-254r67,67r67,-67r27,27r-67,67r67,67r-27,27r-67,-67r-67,67r-27,-27r67,-67r-67,-67"},"\u00d8":{"d":"22,-160v0,-124,144,-212,259,-144r37,-44r36,30r-35,43v27,29,45,68,45,116v2,130,-144,207,-262,143r-35,42r-33,-30r32,-41v-26,-30,-44,-68,-44,-115xm141,-63v99,59,207,-70,137,-163xm243,-258v-100,-53,-204,70,-135,163","w":386},"\u00d9":{"d":"165,7v-80,0,-128,-45,-128,-131r0,-196r62,0r0,183v-4,58,19,87,66,87v47,0,67,-31,67,-87r0,-183r62,0r0,196v1,87,-47,131,-129,131xm93,-404r40,-33r66,64r-26,23","w":330},"\u00da":{"d":"165,7v-80,0,-128,-45,-128,-131r0,-196r62,0r0,183v-4,58,19,87,66,87v47,0,67,-31,67,-87r0,-183r62,0r0,196v1,87,-47,131,-129,131xm238,-404r-80,54r-26,-23r66,-64","w":330},"\u00db":{"d":"165,7v-80,0,-128,-45,-128,-131r0,-196r62,0r0,183v-4,58,19,87,66,87v47,0,67,-31,67,-87r0,-183r62,0r0,196v1,87,-47,131,-129,131xm84,-378r81,-67r82,67r-29,28r-53,-43r-53,43","w":330},"\u00dc":{"d":"165,7v-80,0,-128,-45,-128,-131r0,-196r62,0r0,183v-4,58,19,87,66,87v47,0,67,-31,67,-87r0,-183r62,0r0,196v1,87,-47,131,-129,131xm115,-355v-46,3,-45,-72,0,-69v44,-3,44,72,0,69xm216,-355v-46,3,-45,-72,0,-69v44,-3,44,72,0,69","w":330},"\u00dd":{"d":"108,-146r-111,-174r74,0r69,111r68,-111r74,0r-112,174r0,146r-62,0r0,-146xm212,-404r-80,54r-26,-23r66,-64","w":280},"\u00de":{"d":"248,-174v0,64,-42,105,-109,103r-40,0r0,71r-62,0r0,-320r62,0r0,45r28,0v78,-2,121,31,121,101xm123,-129v37,1,55,-14,55,-45v0,-29,-19,-44,-56,-44r-23,0r0,89r24,0","w":257},"\u00df":{"d":"130,-313v-39,0,-44,31,-44,76r0,237r-58,0r0,-261v-1,-68,37,-100,102,-104v92,-6,138,116,60,162v41,14,65,48,65,96v0,73,-51,117,-132,114r0,-53v43,1,72,-26,72,-64v0,-39,-28,-64,-72,-64r0,-51v32,1,49,-18,50,-45v1,-24,-19,-43,-43,-43","w":271},"\u00e0":{"d":"17,-105v0,-91,113,-151,170,-76r0,-27r58,0r0,208r-58,0r0,-27v-57,75,-170,16,-170,-78xm193,-103v0,-33,-27,-59,-58,-59v-31,-1,-58,27,-58,58v0,31,27,58,58,58v31,0,58,-26,58,-57xm74,-309r42,-27r57,72r-27,20","w":273},"\u00e1":{"d":"17,-105v0,-91,113,-151,170,-76r0,-27r58,0r0,208r-58,0r0,-27v-57,75,-170,16,-170,-78xm193,-103v0,-33,-27,-59,-58,-59v-31,-1,-58,27,-58,58v0,31,27,58,58,58v31,0,58,-26,58,-57xm209,-309r-72,65r-28,-20r57,-72","w":273},"\u00e2":{"d":"17,-105v0,-91,113,-151,170,-76r0,-27r58,0r0,208r-58,0r0,-27v-57,75,-170,16,-170,-78xm193,-103v0,-33,-27,-59,-58,-59v-31,-1,-58,27,-58,58v0,31,27,58,58,58v31,0,58,-26,58,-57xm58,-273r81,-67r82,67r-29,29r-53,-45r-52,45","w":273},"\u00e3":{"d":"17,-105v0,-91,113,-151,170,-76r0,-27r58,0r0,208r-58,0r0,-27v-57,75,-170,16,-170,-78xm193,-103v0,-33,-27,-59,-58,-59v-31,-1,-58,27,-58,58v0,31,27,58,58,58v31,0,58,-26,58,-57xm170,-250v-25,0,-73,-42,-84,-1r-33,0v4,-31,22,-61,51,-60v12,-3,58,19,69,18v10,0,17,-9,21,-18r33,0v-4,32,-26,61,-57,61","w":273},"\u00e4":{"d":"17,-105v0,-91,113,-151,170,-76r0,-27r58,0r0,208r-58,0r0,-27v-57,75,-170,16,-170,-78xm193,-103v0,-33,-27,-59,-58,-59v-31,-1,-58,27,-58,58v0,31,27,58,58,58v31,0,58,-26,58,-57xm91,-247v-45,0,-44,-69,0,-69v19,0,35,16,35,35v0,19,-16,34,-35,34xm191,-247v-44,0,-44,-69,0,-69v19,0,35,16,35,35v0,19,-16,34,-35,34","w":273},"\u00e5":{"d":"17,-105v0,-91,113,-151,170,-76r0,-27r58,0r0,208r-58,0r0,-27v-57,75,-170,16,-170,-78xm193,-103v0,-33,-27,-59,-58,-59v-31,-1,-58,27,-58,58v0,31,27,58,58,58v31,0,58,-26,58,-57xm95,-289v0,-23,21,-44,44,-44v57,0,57,89,0,89v-23,0,-44,-22,-44,-45xm139,-272v22,1,22,-34,0,-33v-22,-1,-22,34,0,33","w":273},"\u00e6":{"d":"264,-215v69,1,111,47,107,120r-157,0v-6,58,79,77,100,28r54,9v-18,71,-144,90,-183,25v-34,59,-168,55,-168,-28v0,-65,88,-87,141,-55r0,-10v2,-53,-68,-48,-110,-34r0,-47v54,-14,115,-12,137,28v18,-24,45,-36,79,-36xm315,-132v-9,-55,-90,-55,-99,0r99,0xm158,-64v-3,-33,-83,-34,-85,0v-1,40,84,37,85,0","w":387},"\u00e7":{"d":"17,-103v0,-80,89,-140,167,-99r0,57v-38,-41,-107,-15,-107,41v0,56,69,82,107,41r0,57v-78,40,-167,-14,-167,-97xm155,42r-55,60r-29,-16r47,-64","w":200},"\u00e8":{"d":"125,-215v69,-1,110,47,107,121r-156,0v-4,59,75,74,100,27r54,9v-18,43,-52,65,-102,65v-65,1,-113,-43,-111,-111v2,-67,39,-110,108,-111xm176,-131v-4,-45,-63,-55,-88,-24v-5,6,-8,14,-10,24r98,0xm59,-309r42,-27r57,72r-27,20","w":248},"\u00e9":{"d":"125,-215v69,-1,110,47,107,121r-156,0v-4,59,75,74,100,27r54,9v-18,43,-52,65,-102,65v-65,1,-113,-43,-111,-111v2,-67,39,-110,108,-111xm176,-131v-4,-45,-63,-55,-88,-24v-5,6,-8,14,-10,24r98,0xm192,-309r-72,65r-28,-20r57,-72","w":248},"\u00ea":{"d":"125,-215v69,-1,110,47,107,121r-156,0v-4,59,75,74,100,27r54,9v-18,43,-52,65,-102,65v-65,1,-113,-43,-111,-111v2,-67,39,-110,108,-111xm176,-131v-4,-45,-63,-55,-88,-24v-5,6,-8,14,-10,24r98,0xm46,-273r81,-67r83,67r-30,29r-53,-45r-52,45","w":248},"\u00eb":{"d":"125,-215v69,-1,110,47,107,121r-156,0v-4,59,75,74,100,27r54,9v-18,43,-52,65,-102,65v-65,1,-113,-43,-111,-111v2,-67,39,-110,108,-111xm176,-131v-4,-45,-63,-55,-88,-24v-5,6,-8,14,-10,24r98,0xm78,-247v-46,3,-45,-72,0,-69v44,-3,44,72,0,69xm177,-247v-44,0,-44,-69,0,-69v19,0,35,16,35,35v0,19,-16,34,-35,34","w":248},"\u00ec":{"d":"85,-208r0,208r-58,0r0,-208r58,0xm-10,-309r43,-27r57,72r-28,20","w":112},"\u00ed":{"d":"85,-208r0,208r-58,0r0,-208r58,0xm122,-309r-72,65r-28,-20r58,-72","w":112},"\u00ee":{"d":"85,-208r0,208r-58,0r0,-208r58,0xm-16,-273r72,-67r73,67r-30,29r-43,-45r-43,45","w":112},"\u00ef":{"d":"85,-208r0,208r-58,0r0,-208r58,0xm14,-247v-46,3,-45,-72,0,-69v44,-3,44,72,0,69xm99,-247v-46,3,-45,-72,0,-69v44,-3,44,72,0,69","w":112},"\u00f0":{"d":"81,-303v-15,-11,-22,-13,-42,-23r17,-34v27,10,50,22,66,35r54,-26r20,39r-36,18v47,39,95,116,95,186v0,69,-48,115,-118,115v-67,0,-122,-45,-120,-110v2,-71,54,-116,130,-111v-11,-21,-24,-40,-37,-55r-45,22r-18,-38xm194,-104v0,-32,-28,-58,-58,-58v-31,0,-59,27,-59,57v0,32,27,59,59,59v30,0,58,-27,58,-58","w":270},"\u00f1":{"d":"170,-115v2,-35,-9,-49,-40,-50v-30,0,-44,19,-44,57r0,108r-58,0r0,-208r58,0r0,26v36,-59,142,-37,142,50r0,132r-58,0r0,-115xm162,-250v-25,0,-74,-42,-85,-1r-33,0v4,-31,23,-61,52,-60v12,-3,58,18,68,18v10,0,17,-9,21,-18r33,0v-4,31,-25,61,-56,61","w":255},"\u00f2":{"d":"17,-106v-1,-63,53,-109,119,-109v67,0,118,45,118,111v0,65,-51,113,-119,111v-69,-2,-118,-41,-118,-113xm194,-104v0,-32,-28,-58,-59,-58v-31,0,-58,28,-58,57v0,32,27,59,59,59v31,0,58,-27,58,-58xm70,-309r42,-27r57,72r-27,20","w":270},"\u00f3":{"d":"17,-106v-1,-63,53,-109,119,-109v67,0,118,45,118,111v0,65,-51,113,-119,111v-69,-2,-118,-41,-118,-113xm194,-104v0,-32,-28,-58,-59,-58v-31,0,-58,28,-58,57v0,32,27,59,59,59v31,0,58,-27,58,-58xm205,-309r-72,65r-28,-20r57,-72","w":270},"\u00f4":{"d":"17,-106v-1,-63,53,-109,119,-109v67,0,118,45,118,111v0,65,-51,113,-119,111v-69,-2,-118,-41,-118,-113xm194,-104v0,-32,-28,-58,-59,-58v-31,0,-58,28,-58,57v0,32,27,59,59,59v31,0,58,-27,58,-58xm54,-273r81,-67r83,67r-30,29r-53,-45r-52,45","w":270},"\u00f5":{"d":"17,-106v-1,-63,53,-109,119,-109v67,0,118,45,118,111v0,65,-51,113,-119,111v-69,-2,-118,-41,-118,-113xm194,-104v0,-32,-28,-58,-59,-58v-31,0,-58,28,-58,57v0,32,27,59,59,59v31,0,58,-27,58,-58xm169,-250v-25,0,-73,-42,-84,-1r-33,0v4,-31,22,-61,51,-60v12,-3,59,18,69,18v10,0,17,-9,21,-18r33,0v-5,32,-25,61,-57,61","w":270},"\u00f6":{"d":"17,-106v-1,-63,53,-109,119,-109v67,0,118,45,118,111v0,65,-51,113,-119,111v-69,-2,-118,-41,-118,-113xm194,-104v0,-32,-28,-58,-59,-58v-31,0,-58,28,-58,57v0,32,27,59,59,59v31,0,58,-27,58,-58xm86,-247v-46,3,-45,-72,0,-69v44,-3,44,72,0,69xm185,-247v-44,0,-44,-69,0,-69v19,0,35,16,35,35v0,19,-16,34,-35,34","w":270},"\u00f7":{"d":"29,-179r214,0r0,38r-214,0r0,-38xm136,-51v-37,2,-39,-61,0,-58v38,-3,38,60,0,58xm136,-211v-37,2,-38,-61,0,-59v37,-2,38,61,0,59"},"\u00f8":{"d":"48,-26v-69,-69,-15,-189,87,-189v21,0,41,4,60,13r28,-33r27,22r-26,31v69,69,16,189,-87,189v-21,0,-42,-4,-61,-13r-28,33r-26,-22xm113,-50v52,20,102,-36,72,-86xm158,-158v-53,-20,-102,36,-72,86","w":271},"\u00f9":{"d":"128,7v-60,0,-100,-27,-100,-87r0,-128r58,0r0,118v0,32,14,47,42,47v28,0,43,-15,43,-47r0,-118r58,0r0,128v0,59,-41,87,-101,87xm63,-309r42,-27r57,72r-27,20","w":256},"\u00fa":{"d":"128,7v-60,0,-100,-27,-100,-87r0,-128r58,0r0,118v0,32,14,47,42,47v28,0,43,-15,43,-47r0,-118r58,0r0,128v0,59,-41,87,-101,87xm199,-309r-72,65r-28,-20r58,-72","w":256},"\u00fb":{"d":"128,7v-60,0,-100,-27,-100,-87r0,-128r58,0r0,118v0,32,14,47,42,47v28,0,43,-15,43,-47r0,-118r58,0r0,128v0,59,-41,87,-101,87xm47,-273r81,-67r82,67r-30,29r-52,-45r-53,45","w":256},"\u00fc":{"d":"128,7v-60,0,-100,-27,-100,-87r0,-128r58,0r0,118v0,32,14,47,42,47v28,0,43,-15,43,-47r0,-118r58,0r0,128v0,59,-41,87,-101,87xm79,-247v-46,3,-45,-72,0,-69v44,-3,44,72,0,69xm178,-247v-45,0,-44,-69,0,-69v19,0,35,16,35,35v0,19,-16,34,-35,34","w":256},"\u00fd":{"d":"99,-31r-98,-177r67,0r63,118r59,-118r66,0r-168,319r-65,0xm198,-309r-72,65r-28,-20r57,-72","w":256},"\u00fe":{"d":"255,-104v0,88,-105,148,-167,82r0,131r-60,0r0,-459r60,0r0,164v61,-68,167,-8,167,82xm191,-103v0,-33,-21,-58,-53,-58v-31,0,-53,26,-53,58v0,31,22,58,52,57v31,0,54,-26,54,-57"},"\u00ff":{"d":"99,-31r-98,-177r67,0r63,118r59,-118r66,0r-168,319r-65,0xm79,-247v-46,3,-45,-72,0,-69v44,-3,44,72,0,69xm178,-247v-45,0,-44,-69,0,-69v19,0,35,16,35,35v0,19,-16,34,-35,34","w":256},"\u2013":{"d":"36,-135r200,0r0,49r-200,0r0,-49"},"\u2014":{"d":"0,-135r323,0r0,49r-323,0r0,-49","w":323},"\u2018":{"d":"74,-192r-53,-7r68,-127r36,4","w":146},"\u2019":{"d":"62,-326r54,6r-68,128r-37,-5","w":139},"\u201c":{"d":"165,-192r-54,-7r68,-127r37,4xm74,-192r-53,-7r68,-127r36,4","w":236},"\u201d":{"d":"72,-326r53,6r-67,128r-37,-5xm162,-326r54,6r-68,128r-37,-5","w":236},"\u201e":{"d":"72,-66r53,6r-67,128r-37,-5xm162,-66r54,6r-68,128r-37,-5","w":236},"\u2022":{"d":"94,-163v0,-36,31,-66,67,-66v35,0,66,32,66,66v0,36,-31,67,-66,67v-36,0,-67,-32,-67,-67","w":319},"\u2026":{"d":"30,-31v0,-47,75,-48,75,0v0,20,-17,38,-37,38v-21,0,-38,-18,-38,-38xm166,-31v0,-48,75,-48,75,0v0,20,-17,38,-37,38v-21,0,-38,-18,-38,-38xm302,-31v0,-48,75,-48,75,0v0,20,-17,38,-37,38v-21,0,-38,-18,-38,-38","w":407},"\u2032":{"d":"108,-326r-35,126r-31,0r27,-126r39,0","w":313},"\u2033":{"d":"99,-326r-35,126r-30,0r26,-126r39,0xm163,-326r-35,126r-30,0r26,-126r39,0","w":345},"\u20a0":{"d":"129,-326v-79,-4,-92,109,-57,162v10,15,28,24,52,28r0,-102r167,0r0,30r-134,0r0,72r129,0r0,29r-129,0r0,77r140,0r0,30r-173,0r0,-107v-71,-4,-103,-54,-103,-123v0,-70,38,-126,111,-126v51,0,82,27,92,80r-35,0v-5,-33,-23,-48,-60,-50","w":320},"\u20a1":{"d":"22,-173v0,-120,82,-207,207,-177r22,-40r25,13r-21,37v6,3,12,6,17,10r33,-60r25,13r-38,66v17,20,26,45,30,75r-57,0v-2,-7,-2,-14,-4,-19r-118,209v65,21,119,-6,126,-78r58,0v-2,105,-104,160,-210,124r-13,23r-25,-12r14,-24v-6,-4,-12,-9,-16,-13r-27,49r-25,-13r33,-58v-24,-33,-36,-74,-36,-125xm120,-61r124,-221v-5,-5,-9,-9,-15,-12r-123,217v4,6,9,11,14,16xm202,-303v-108,-20,-142,100,-111,196","w":346},"\u20a2":{"d":"22,-173v0,-106,59,-185,163,-183v30,0,55,8,77,22r0,69v-18,-27,-44,-38,-82,-40v-123,-7,-132,228,-33,258r0,-148r50,0r0,46v20,-37,42,-55,78,-50r0,52v-49,-6,-77,17,-76,67r0,40v15,-3,29,-10,43,-21r41,35v-25,22,-57,37,-101,37v-100,0,-160,-80,-160,-184","w":325},"\u20a3":{"d":"210,-266r-107,0r0,71r100,0r0,54r-100,0r0,141r-63,0r0,-320r170,0r0,54xm225,-149r47,0r0,22v13,-24,35,-34,62,-22r-6,40v-31,-11,-56,1,-56,39r0,70r-47,0r0,-149","w":336},"\u20a4":{"d":"195,8v-38,0,-121,-55,-141,-4r-45,-8v15,-38,31,-56,70,-62v2,-6,4,-13,5,-20r-60,0r0,-34r53,0v-3,-8,-16,-25,-18,-30r-35,0r0,-34r18,0v-26,-80,34,-143,113,-143v67,0,105,43,107,111r-63,7v8,-37,-16,-63,-49,-63v-45,0,-64,46,-45,88r85,0r0,34r-69,0v4,12,8,22,10,30r59,0r0,34r-57,0v-1,9,-3,17,-5,24v0,0,53,20,70,19v14,0,22,-8,28,-25r43,9v-10,38,-33,67,-74,67"},"\u20a5":{"d":"84,-221v21,-47,117,-57,141,-5r43,-81r28,15r-18,34v58,-13,104,15,104,72r0,186r-54,0r0,-173v1,-27,-17,-42,-42,-42v-31,-1,-52,27,-52,58r0,157r-54,0r0,-73r-57,107r-28,-15r85,-160r0,-32v0,-27,-15,-41,-41,-42v-31,-1,-53,26,-53,58r0,157r-54,0r0,-255r52,0r0,34","w":413},"\u20a6":{"d":"316,-210r32,0r0,31r-32,0r0,30r32,0r0,31r-32,0r0,118r-61,0r-73,-118r-88,0r0,118r-57,0r0,-118r-38,0r0,-31r38,0r0,-30r-38,0r0,-31r38,0r0,-140r61,0r86,140r75,0r0,-140r57,0r0,140xm164,-149r-19,-30r-51,0r0,30r70,0xm126,-210r-32,-53r0,53r32,0xm202,-179r19,30r38,0r0,-30r-57,0xm240,-118r19,30r0,-30r-19,0","w":346},"\u20a7":{"d":"247,-218v0,62,-39,101,-107,99r-41,0r0,119r-62,0r0,-320r93,0v78,-3,117,35,117,102xm183,-219v0,-36,-21,-48,-62,-47r-22,0r0,93r26,0v39,0,58,-15,58,-46xm321,-107r0,107r-47,0r0,-107r-17,0r0,-42r17,0r0,-46r47,0r0,46r28,0r0,42r-28,0xm380,-74v-33,-29,-3,-79,40,-79v19,0,35,7,49,18r-22,25v-13,-16,-47,-13,-36,8v24,13,67,18,67,55v0,56,-90,70,-121,29r22,-27v15,29,68,19,45,-10v-10,-6,-39,-14,-44,-19","w":483},"\u20a8":{"d":"202,-145r-104,0r0,145r-56,0r0,-211r-34,3r-3,-36r37,-4r0,-101r161,0v63,0,99,27,108,79r33,-3r3,37r-36,3v-4,24,-19,44,-44,60v29,17,36,41,38,88v2,41,-1,51,20,64r0,21r-63,0v-29,-80,19,-145,-60,-145xm98,-216r0,21v0,0,113,9,142,-11v6,-5,10,-13,13,-23xm252,-265v-7,-26,-23,-33,-57,-33r-97,0r0,46xm322,-144v0,-75,123,-87,149,-33v5,9,8,22,8,39r-46,0v13,-50,-93,-32,-60,4v54,23,108,13,114,77v8,77,-142,91,-164,29v-4,-9,-7,-22,-8,-40r45,0v3,28,13,33,43,37v36,5,58,-40,13,-44v0,0,-55,-13,-69,-22v-17,-10,-25,-26,-25,-47","w":498},"\u20a9":{"d":"260,-148r-65,0r-35,148r-57,0r-40,-148r-67,0r0,-27r59,0r-9,-35r-50,0r0,-27r43,0r-31,-113r63,0r25,113r74,0r28,-113r59,0r28,113r75,0r24,-113r63,0r-30,113r36,0r0,27r-43,0r-10,35r53,0r0,27r-60,0r-39,148r-57,0xm254,-175r-9,-35r-35,0r-8,35r52,0xm238,-237r-11,-43r-10,43r21,0xm102,-210r8,35r46,0r8,-35r-62,0xm116,-148r16,71r17,-71r-33,0xm292,-210r8,35r46,0r8,-35r-62,0xm307,-148r18,72r16,-72r-34,0","w":453},"\u20aa":{"d":"250,11v-65,0,-115,-35,-115,-96r0,-191r49,0r0,188v1,35,29,60,66,60v40,0,65,-23,65,-64r0,-230r49,0r0,237v1,62,-50,96,-114,96xm161,-361v64,0,114,36,114,96r0,191r-50,0r0,-190v0,-35,-27,-58,-63,-58v-41,0,-68,24,-67,66r0,267r-49,0r0,-276v-1,-62,51,-97,115,-96","w":401},"\u20ab":{"d":"13,-127v0,-72,43,-134,110,-134v30,0,55,13,73,38r0,-64r-68,0r0,-29r68,0r0,-34r53,0r0,34r30,0r0,29r-30,0r0,287r-51,0r0,-27v-19,26,-44,38,-75,38v-70,-1,-110,-61,-110,-138xm132,-37v86,3,85,-180,-1,-176v-82,-1,-87,176,1,176xm237,29r0,32r-179,0r0,-32r179,0","w":280},"\u20ac":{"d":"266,-3v-98,39,-199,-24,-221,-102r-51,0r23,-37r20,0r0,-28r-43,0r23,-37r26,0v25,-83,116,-147,223,-109r0,57v-65,-36,-140,-3,-161,52r139,0r-24,37r-124,0v0,0,0,20,1,28r107,0r-24,37r-72,0v23,52,97,79,158,45r0,57","w":280},"\u2122":{"d":"79,-284r0,146r-41,0r0,-146r-39,0r0,-36r119,0r0,36r-39,0xm125,-138r32,-185r30,0r45,110r47,-110r30,0r29,185r-41,0r-14,-100r-44,103r-15,0r-43,-103r-16,100r-40,0","w":345}}});

// Cufon Replacement
/* Replacement calls. Please see documentation for more information. http://wiki.github.com/sorccu/cufon/ */
Cufon.replace('h1.header, h2.header, h3.header, .h3.header, .h4.header',{ fontFamily: 'sma futura global demibold' });
Cufon.replace('.h3.header.regular, h5.header.regular',{ fontFamily: 'sma futura global regular' });
/**
 * SkiyoTabs for jQuery
 *
 * @auth Jessica
 * @link http://demo.skiyo.cn/skiyotabs/
 *
 */
(function($) {
    $.fn.SkiyoTabs = function(options) {
	var opts = $.extend({}, $.fn.SkiyoTabs.defaults, options);
	return this.each(function() {
	    var target = $(this);
	    var div = $('div.mootabs_panel',target);
/*	    var tabs = target.find('li'); */
	    var tabs = target.children('ul.mootabs_title').find('li');
	    var flag = false;
	    now = new Date().valueOf();
	    function Tabs() {
		if(flag) {
		    if(new Date().valueOf() - now < 300) {
			return false;
		    }
		} else {
		    select(div, $(this), opts.firstOn);
		    flag = true;
		    return false;
		}

		if($(this).hasClass(opts.className)) {
		    return false;
		}
		select(div, $(this));
		now = new Date().valueOf();
		return false;
	    }

	    function select(div, li, index) {
		div.addClass('inactive');
		if(typeof(index) == "number") {
		    tabs.removeClass(opts.className);
		    $(tabs[index]).addClass(opts.className);
		    $(div[index]).removeClass(opts.classNameInactive);
		    $(div[index]).addClass(opts.className);

		} else {
		    var tab = div.filter(li.find("a").attr("href"));
		    var divId = li.find("a").attr("href").split('#',2)[1];
		    tab.fadeIn(opts.fadeIn);
		    tabs.removeClass(opts.className);
		    li.addClass(opts.className);
		    $('#'+divId).addClass(opts.className);
		    $('#'+divId).removeClass(opts.classNameInactive);

		}
	    }

	    tabs.bind(opts.eventName == 'all' ? 'click mouseover' : opts.eventName, Tabs).filter(':first').trigger(opts.eventName == 'all' ? 'click' : opts.eventName);
	});
    };
    $.fn.SkiyoTabs.defaults = {
	firstOn : 0,
	className: 'selected',
	eventName: 'all',
	loadName: 'loading...',
	fadeIn: 'slow'
    };
})(jQuery);

jQuery(document).ready(function() {
    jQuery("#myTabs").SkiyoTabs({
	firstOn : 0,
	className:'active',
	classNameInactive:'inactive',
	eventName:'click',
	fadeIn: 'slow',
	autoFade:true,
	autoFadeTime:3
    });


});

// Inspired by base2 and Prototype
(function(){
    var initializing = false, fnTest = /xyz/.test(function(){
	xyz;
    }) ? /\b_super\b/ : /.*/;

    // The base Class implementation (does nothing)
    this.Class = function(){};

    // Create a new Class that inherits from this class
    Class.extend = function(prop) {
	var _super = this.prototype;

	// Instantiate a base class (but only create the instance,
	// don't run the init constructor)
	initializing = true;
	var prototype = new this();
	initializing = false;

	// Copy the properties over onto the new prototype
	for (var name in prop) {
	    // Check if we're overwriting an existing function
	    prototype[name] = typeof prop[name] == "function" &&
	    typeof _super[name] == "function" && fnTest.test(prop[name]) ?
	    (function(name, fn){
		return function() {
		    var tmp = this._super;

		    // Add a new ._super() method that is the same method
		    // but on the super-class
		    this._super = _super[name];

		    // The method only need to be bound temporarily, so we
		    // remove it when we're done executing
		    var ret = fn.apply(this, arguments);
		    this._super = tmp;

		    return ret;
		};
	    })(name, prop[name]) :
	    prop[name];
	}

	// The dummy class constructor
	function Class() {
	    // All construction is actually done in the init method
	    if ( !initializing && this.init )
		this.init.apply(this, arguments);
	}

	// Populate our constructed prototype object
	Class.prototype = prototype;

	// Enforce the constructor to be what we expect
	Class.constructor = Class;

	// And make this class extendable
	Class.extend = arguments.callee;

	return Class;
    };
})();


var jQueryFAQ = {
    init: function(){
	this.faqbase = jQuery('#faq-base-box');

	if(this.faqbase.length > 0){

	    this.results = new FAQresults();

	    this.selector1 = new FAQselector(1);
	    this.selector2 = new FAQselector(2);

	    this.selector1.nextItem = this.selector2;
	    this.selector1.contentResults = this.results

	    //this.selector2.nextItem = this.selector3;
	    //this.selector2.contentResults = this.results
	    //this.selector2.specHandling = true;

	    this.selector2.nextItem = this.results;

	    this.faqmessages = jQuery('#faq-messages');
	    if(this.faqmessages.length > 0){
		this.faqmsgs = [
		'',
		this.faqmessages.find('.message1').text(),
		this.faqmessages.find('.message2').text(),
		this.faqmessages.find('.message3').text(),
		this.faqmessages.find('.message4').text()
		];
	    }

	    this.selector1.parentObj = this;
	    this.selector2.parentObj = this;
	    //this.selector3.parentObj = this;
	    this.results.parentObj = this;

	    var currentURL = location.href;
	    var relpart = currentURL.match(/\/faq\/(.*)\/faq\/(.*).html/);

	    if(relpart){
		this.selector1.updateMenuState(relpart[1]);
		this.selector2.updateMenuState(relpart[1]);
	    } else {
		this.selector2.removeContent(1);
	    }
	    this.initTabMenu();

	}

	new FAQtopten();
    },
    initTabMenu: function(){
	var localSelf = this;
	var elements = jQuery('#faq-base-box > .mootabs_title > li > a');
	var lielements = jQuery('#faq-base-box > .mootabs_title > li');

	elements.bind('click', function(e){
	    lielements.removeClass('active');
	    jQuery(this).parent().addClass('active');

	    localSelf.getTabEventContent(jQuery(this).attr('href'));

	    localSelf.selector2.removeContent(1);
	    return false;
	});
    },
    getTabEventContent: function (url) {
	var localSelf = this;
	localSelf.nextItem = this.selector1;

	localSelf.nextItem.showWait();

	var urlTyped = '';

	if(url.match(/\?/)){
	    urlTyped = url+'&type=65&kbshop_action=99';
	} else {
	    urlTyped = url+'?type=65&kbshop_action=99';
	}

	if(this.nextItem && this.nextItem.nextItem){
	    this.nextItem.nextItem.removeContent(this.itemNumber+1);
	}
	var nextContent = localSelf.nextItem.selector;

	jQuery.ajax({
	    url: urlTyped,
	    success: function(html){
		nextContent.html(html);
		if(localSelf.nextItem){
		    localSelf.nextItem.addEvents();
		    localSelf.nextItem.hideWait();
		    if(localSelf.nextItem.selector.find('ul > li > a').length < 1){
			localSelf.nextItem.removeContent(4);
		    }
		}
	    },
	    error: function(){
		localSelf.hideWait();
		alert('Request Error: Bitte laden Sie die Seite neu');
	    }

	});

    }
}


/**
 * FAQ Selector
 */
var FAQselector = Class.extend({

    options: {
    },

    init: function(itemNumber,options){
	//this.setOptions(options);
	this.itemNumber = itemNumber;

	// identify select criteria boxes
	this.selector = jQuery('#criteria-selector-' + this.itemNumber);

	// identify spiner
	this.wait = jQuery('.criteria-selector-title-' + this.itemNumber + ' .wait');

	this.hideWait();
	this.addEvents();

    },

    updateMenuState: function(relpart){
	var elements  = this.selector.getElements('li a');
	var actel;
	elements.each(function(element){
	    var currenthrefmatch = element.attr('href').match(/\/faq\/(.*).html/);
	    if(relpart.test('^'+currenthrefmatch[1]+'($|\/)')){
		actel = element;
	    }

	});
//console.log(typeof(actel));
	if(typeof(actel)=='element'){
	    actel.addClass('active');
	    ulparentelement = actel.getParent().getParent();
	    if(ulparentelement.getStyle('display')=='none'){
		ulparentelement.getParent().addClass('active');
		ulparentelement.css('display','block');
	    }
	}

    },

    addEvents: function(){
	var elements  = this.selector.find('li a');
	var localSelf = this;
	var firstitem = false;

	elements.bind('click', function(e){
	    elements.removeClass('active');
	    jQuery(this).addClass('active');


	    if(jQuery(this).hasClass('firstItem')){
		localSelf.getContent(jQuery(this).attr('href'),true);
	    } else {
		localSelf.getContent(jQuery(this).attr('href'),false);
	    }
	    return false;
	});


	var firstlevelMenuItems = this.selector.find('ul li.topitem');
	var subMenuBoxes = this.selector.find('ul ul');

	if(firstlevelMenuItems.length > 0){
	    subMenuBoxes.each(function(el){
		jQuery(this).css('display','none');
	    });
	    firstlevelMenuItems.each(function(element){
		jQuery(this).bind('click',function(e){

		    if(jQuery(this).hasClass('active')){
			jQuery(this).removeClass('active');
			jQuery(this).find('ul').css('display','none');
		    } else {

			subMenuBoxes.each(function(el){
			    jQuery(this).css('display','none');
			});
			firstlevelMenuItems.each(function(el){
			    jQuery(this).removeClass('active');
			});

			jQuery(this).addClass('active');
			jQuery(this).find('ul').css('display','block');
		    }
		});
	    });
	}

    },


    hideWait: function(){
	this.wait.css('display','none');
    },

    showWait: function(){
	this.wait.css('display','block');
    },

    removeContent: function(item){
	//this.selector.setHTML('');
	this.selector.html('<div class="empty-message">' + this.parentObj.faqmsgs[item] + '</div>');

	if(this.nextItem){
	    this.nextItem.removeContent(item);
	}
    },

    selectFirst: function(){
	var firstitem = this.selector.find('li:first a');
	if(firstitem.length > 0){
	    firstitem.addClass('active');
	}
    },

    getContent: function (url,firstitem) {
	var localSelf = this;

	if(!localSelf.nextItem){
	    return false;
	}

	localSelf.nextItem.showWait();

	var urlTyped = '';
	if(url.match(/\?/)){
	    urlTyped = url+'&type=65&kbshop_action=' + this.itemNumber;
	} else {
	    urlTyped = url+'?type=65&kbshop_action=' + this.itemNumber;
	}

	var nextContent = localSelf.nextItem.selector;

	jQuery.ajax({
	    url: urlTyped,
	    success: function(html){
		nextContent.html(html);
		if(localSelf.nextItem){
		    localSelf.nextItem.addEvents();
		    localSelf.nextItem.hideWait();
		    localSelf.nextItem.selectFirst();
		}
	    },
	    error: function(){
		localSelf.hideWait();
		alert('Request Error: Bitte laden Sie die Seite neu');
	    }

	});

	if(typeof(this.contentResults) != 'object'){
	    if(this.nextItem && this.nextItem.nextItem){
		this.nextItem.nextItem.removeContent(this.itemNumber+1);
	    }
	}

	//if((typeof(this.contentResults) == 'object') && localSelf.specHandling && firstitem){
	if(typeof(this.contentResults) == 'object'){
	    // action 3 special
	    localSelf.contentResults.showWait();

	    if(url.match(/\?/)){
		urlTyped = url+'&type=65&kbshop_action=3';
	    } else {
		urlTyped = url+'?type=65&kbshop_action=3';
	    }

	    jQuery.ajax({
		url: urlTyped,
		success: function(html){
		    localSelf.contentResults.selector.html(html);
		    if(localSelf.contentResults){
			localSelf.contentResults.addEvents();
			localSelf.contentResults.hideWait();
		    }
		},
		error: function(){
		    localSelf.hideWait();
		    alert('Request Error: Bitte laden Sie die Seite neu');
		}

	    });


	}

	return false;
    }

});

/**
 * FAQ Results
 */
var FAQresults = Class.extend({

    options: {
    },

    init: function(itemNumber,options){
	//this.setOptions(options);
	this.itemNumber = itemNumber;
	// identify select criteria boxes
	this.selector = jQuery('#faq-results');

	// identify spiner
	this.wait = jQuery('.faq-results-box > .wait');

	this.hideWait();
	this.addEvents();

    },

    selectFirst: function(){

    },

    addEvents: function(){
	localSelf = this;
	var elements  = this.selector.find('a');
	elements.bind('click', function(e){
	    var url = jQuery(this).attr('href');
	    if(!url.match(/(^http[s]?:\/\/)|(^\/)/)){
		url = '/' + url;
	    }

	    localSelf.openPopup(url,'smafaq',800,600,'auto','center');
	    return false;
	});

    },


    openPopup: function(mypage,myname,w,h,scroll,pos){
	if(pos=="random"){
	    LeftPosition=(screen.width)?Math.floor(Math.random()*(screen.width-w)):100;
	    TopPosition=(screen.height)?Math.floor(Math.random()*((screen.height-h)-75)):100;
	}
	if(pos=="center"){
	    LeftPosition=(screen.width)?(screen.width-w)/2:100;
	    TopPosition=(screen.height)?(screen.height-h)/2:100;
	}
	else if((pos!="center" && pos!="random") || pos==null){
	    LeftPosition=0;
	    TopPosition=20
	}
	if(scroll=='no' || scroll=='yes'){
	    scroll = '=' + scroll;
	}else{
	    scroll='';
	}

	settings='width='+w+',height='+h+',top='+TopPosition+',left='+LeftPosition+',scrollbars'+scroll+',location=no,directories=no,status=no,menubar=no,toolbar=no,resizable=yes';
	win=window.open(mypage,myname,settings);
	win.focus();
    },

    hideWait: function(){
	this.wait.css('display','none');
    },

    showWait: function(){
	this.wait.css('display','block');
    },

    removeContent: function(item){
	this.selector.html('<div class="empty-message">' + this.parentObj.faqmsgs[item] + '</div>');
	//this.selector.setHTML('');
    }

});





var FAQtopten = Class.extend({

    options: {
    },

    init: function(itemNumber,options){
	// identify select criteria boxes
	this.selector = jQuery('#topten-faq, #faq-preview, .tx-indexedsearch');

	if(this.selector.length > 0){
	    this.addEvents();
	}




    },

    addEvents: function(){
	var localSelf = this;

	this.selector.each(function(selector){
	    var elements  = jQuery(this).find('a');

	    elements.each(function(element){

		var url = jQuery(this).attr('href');
		// DE faq links
		if(url.match(/\/artikel\/faq\//)){
		    jQuery(this).bind('click', function(e){
			if(!url.match(/(^http[s]?:\/\/)|(^\/)/)){
			    url = '/' + url;
			}
			localSelf.openPopup(url,'smafaq',800,600,'auto','center');
			return false;
		    });
		// EN faq links
		}else if(url.match(/\/item\/faq\//)){

		    jQuery(this).bind('click', function(e){
			if(!url.match(/(^http[s]?:\/\/)|(^\/)/)){
			    url = '/' + url;
			}
			localSelf.openPopup(url,'smafaq',800,600,'auto','center');
			return false;
		    });
		// IT faq links
		}else if(url.match(/\/articolo\/faq\//)){

		    jQuery(this).bind('click', function(e){
			if(!url.match(/(^http[s]?:\/\/)|(^\/)/)){
			    url = '/' + url;
			}

			localSelf.openPopup(url,'smafaq',800,600,'auto','center');
		    });
		// FR faq links
		}else if(url.match(/\/articles\/faq\//)){

		    jQuery(this).bind('click', function(e){
			if(!url.match(/(^http[s]?:\/\/)|(^\/)/)){
			    url = '/' + url;
			}

			localSelf.openPopup(url,'smafaq',800,600,'auto','center');
			return false;
		    });
		}

	    });


	});

    },


    openPopup: function(mypage,myname,w,h,scroll,pos){
	if(pos=="random"){
	    LeftPosition=(screen.width)?Math.floor(Math.random()*(screen.width-w)):100;
	    TopPosition=(screen.height)?Math.floor(Math.random()*((screen.height-h)-75)):100;
	}
	if(pos=="center"){
	    LeftPosition=(screen.width)?(screen.width-w)/2:100;
	    TopPosition=(screen.height)?(screen.height-h)/2:100;
	}
	else if((pos!="center" && pos!="random") || pos==null){
	    LeftPosition=0;
	    TopPosition=20
	}
	if(scroll=='no' || scroll=='yes'){
	    scroll = '=' + scroll;
	}else{
	    scroll='';
	}

	settings='width='+w+',height='+h+',top='+TopPosition+',left='+LeftPosition+',scrollbars'+scroll+',location=no,directories=no,status=no,menubar=no,toolbar=no,resizable=yes';
	win=window.open(mypage,myname,settings);
	win.focus();
    }

});
var jQueryDropdownSelectors = {
    init: function(){
	//var mac   =  !!(navigator.userAgent.indexOf("Mac")!=-1);

	jQuery.each(par.dropdownselectors, function(conf){
	    var el = jQuery(this).get(0);
	    var box = jQuery(this).get(1);

	    var showBox = false;
	    //var boxfx = new Fx.Styles(box, {duration:300, wait:false});

	    //boxfx.state = 0;

	    jQuery('#'+el).click(function(){
		if(showBox == false){
		    jQuery('#'+box).css('display','block');
		    //jQuery('#'+box).css('opacity',1);
		    showBox = true;
		}
	    });

	    if (el == 'countryselector') {
		jQuery('#'+box).bind('mouseleave', function(e){
		    jQuery('#'+box).css('display','none');
		    showBox = false;
		});
	    } else if (el == 'smapagesselector') {
		jQuery('#'+box).bind('mouseleave', function(e){
		    jQuery('#'+box).css('display','none');
		    showBox = false;
		});
	    } else {
		jQuery('#'+box).bind('mouseleave', function(e){
		    if(window.gecko){
			jQuery('#'+box).css('display','none');
			showBox = false;
		    } else {
			//boxfx.start({'opacity':0}).chain(function(){
			jQuery('#'+box).css('display','none');
			showBox = false;
		    //});
		    }
		});
	    }


	});

    }
}




var jQueryDropdownSelectorTimeselector = {
    init: function(){
	if(jQuery('#timeselectordata')){
	    var yearselector = jQuery('#yearselector');
	    var monthselector = jQuery('#monthselector');

	    var data = jQuery.parseJSON(jQuery('#timeselectordata').text());
	    yearselector.bind('change', function(e){
		monthselector.html('');
		var optionsdata = data[yearselector.val()];
		var options = '';

		jQuery.each(optionsdata,function(value,index){
		    jQuery('#monthselector').append(
			jQuery('<option></option>').val(value).html(index)
		    );
		});
	    });

	    monthselector.bind('change', function(e){
		document.forms['news-timeselector'].submit();
	    });

	}
    }
}
var jQueryiePngFix = {
	start: function(){
			if (jQuery.browser.msie && jQuery.browser.version < 7){

				jQuery('img,input').each(function(el){
				el = jQuery(this);

				if ( (jQuery(this).get(0).tagName.toLowerCase() == "img" || jQuery(this).get(0).tagName.toLowerCase() == "input") && el.attr('src').match(".png") && !el.hasClass('reflect')) {
					var bgURL  = el.attr('src');
					var height = el.attr('height');
					var width  = el.attr('width');

					if( bgURL && bgURL !== '' && bgURL !== null && bgURL !== 'none') {
						var bgMatch3 = bgURL.match(/http:\/\/.+[a-zA-Z]/);
						if ( bgMatch3 ) {
							bgURL = bgMatch3[0];
						} else if (bgURL.substr(0,1) != '/') {
							bgURL = '/' + bgURL;
						}
					}

					el.css('background', 'none');
					el.css('filter', "progid:DXImageTransform.Microsoft.Alpha(opacity=0)");

					el.attr('src', 'Images/clear.gif');
					el.attr('width',  width);
					el.attr('height', height);

					// Insert new span
					tempDiv = jQuery('<span></span>');
					tempDiv.css('filter', 'progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled="true", sizingMethod="crop", src="'+ bgURL + '")');
					tempDiv.css('display', 'inline-block');
					tempDiv.attr('width',  width);
					tempDiv.attr('height', height);

					// Images with full width must be scaled
					if (el.css('width') == "100%") {
						tempDiv.css('filter', 'progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled="true", sizingMethod="scale", src="'+ bgURL + '")');
					}

					if (jQuery(this).get(0).tagName.toLowerCase() == "input") {
						el.css('filter', 'progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled="true", sizingMethod="scale", src="'+ bgURL + '")');
					} else {
						el.wrap(tempDiv);
					}

				}

			});

		}
	}
};
// menu close delay
var myTimeout = null;

// menu close delay
var jQuery_nav_main = {
    init: function(){
	if(jQuery.browser.msie && jQuery.browser.version < 7){
	    elements = jQuery('ul li a','#nav_main');
	} else {
	    elements = jQuery('li', '#nav_main');
	}

	elements.mouseenter(function(){

	    var elparent = jQuery(this).parent();

	    while(!elparent.is('ul') && !elparent.is('body')){
		elparent = elparent.parent();
	    }

	    var hoverelements = jQuery('.hover', elparent);
	    hoverelements.each(function(){
		jQuery(this).removeClass('hover');
	    });

	    jQuery(this).addClass('hover');

	    //last line
	    clearTimeout(myTimeout);
	});

	elements.mouseleave(function() {
	    myTimeout = setTimeout("navMouseOut();", 1000);
	});

    }
}

function navMouseOut(){
    clearTimeout(myTimeout);
    if(jQuery.browser.msie && jQuery.browser.version < 7){
	elements = jQuery('ul li a','#nav_main');
	elements.removeClass('hover');
    } else {
	elements = jQuery('li', '#nav_main');
	elements.removeClass('hover');
    }
}
// Main Object
	var main = {
		init: function() {
			
			// if not IE, replace now then create Tabs
			// see mootobs.js 
			if ((!jQuery.browser.msie) && (!jQuery.browser.webkit) ) {
				// Replace usual Text with Cufon
				Cufon.refresh();
			}
			
			//myTabs1 = new mootabs('myTabs', {changeTransition: 'none', mouseOverClass: 'over'});
			jQueryDropdownSelectors.init(); // SMA countryselector & SMA websiteselector
			jQueryDropdownSelectorTimeselector.init(); // year/month selector in news

			//autocompleter.init();
			jQueryAccordion.init();
			jQuerySupportAccordion.init();

		    /* altes Geräteaustauschformular in slide.js
			hoverbuttons.init();
			product_properties.init();
			kind_of_service.init();
			disable_enable.init();
			showError.init();
			uncheck.init();
			second_site_checked.init();
		    */

			jQueryFAQ.init();

			// menu close delay
			jQuery_nav_main.init();


			if(jQuery.browser.msie && jQuery.browser.version < 7) {
			    jQueryiePngFix.start();
			}
			
			//gotoTab.init();
			//jumptoTab.init();
			//commentsPages.init();
			//trackFileDownloadsGA.init();
						
			// If IE,replace after tabs are built
			if ((jQuery.browser.msie) || (jQuery.browser.webkit)) {
				// Replace usual Text with Cufon
				Cufon.refresh();
			}
		}
	};






// If all DOM Elements are loaded start the Main Class.
	jQuery(document).ready(function() {
	    main.init();
	});	

	
function MM_findObj(n, d) { 
	var p,i,x; if (!d) d=document; 
		if ((p=n.indexOf("?"))>0&&parent.frames.length) {
			d=parent.frames[n.substring(p+1)].document; 
			n=n.substring(0,p);
		}
		if (!(x=d[n])&&d.all) x=d.all[n]; 
		for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
		for (i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);		
		if(!x && d.getElementById) x=d.getElementById(n); 
		return x;
}

function MM_showHideLayers() { 
	var i,p,v,obj,args=MM_showHideLayers.arguments;
	
	for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
	if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
	obj.visibility=v; }
}
/*
 * FancyBox - jQuery Plugin
 * Simple and fancy lightbox alternative
 *
 * Examples and documentation at: http://fancybox.net
 *
 * Copyright (c) 2008 - 2010 Janis Skarnelis
 * That said, it is hardly a one-person project. Many people have submitted bugs, code, and offered their advice freely. Their support is greatly appreciated.
 *
 * Version: 1.3.4 (11/11/2010)
 * Requires: jQuery v1.3+
 *
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 */

;(function($) {
	var tmp, loading, overlay, wrap, outer, content, close, title, nav_left, nav_right,

		selectedIndex = 0, selectedOpts = {}, selectedArray = [], currentIndex = 0, currentOpts = {}, currentArray = [],

		ajaxLoader = null, imgPreloader = new Image(), imgRegExp = /\.(jpg|gif|png|bmp|jpeg)(.*)?$/i, swfRegExp = /[^\.]\.(swf)\s*$/i,

		loadingTimer, loadingFrame = 1,

		titleHeight = 0, titleStr = '', start_pos, final_pos, busy = false, fx = $.extend($('<div/>')[0], { prop: 0 }),

		isIE6 = $.browser.msie && $.browser.version < 7 && !window.XMLHttpRequest,

		/*
		 * Private methods 
		 */

		_abort = function() {
			loading.hide();

			imgPreloader.onerror = imgPreloader.onload = null;

			if (ajaxLoader) {
				ajaxLoader.abort();
			}

			tmp.empty();
		},

		_error = function() {
			if (false === selectedOpts.onError(selectedArray, selectedIndex, selectedOpts)) {
				loading.hide();
				busy = false;
				return;
			}

			selectedOpts.titleShow = false;

			selectedOpts.width = 'auto';
			selectedOpts.height = 'auto';

			tmp.html( '<p id="fancybox-error">The requested content cannot be loaded.<br />Please try again later.</p>' );

			_process_inline();
		},

		_start = function() {
			var obj = selectedArray[ selectedIndex ],
				href, 
				type, 
				title,
				str,
				emb,
				ret;

			_abort();

			selectedOpts = $.extend({}, $.fn.fancybox.defaults, (typeof $(obj).data('fancybox') == 'undefined' ? selectedOpts : $(obj).data('fancybox')));
			
			ret = selectedOpts.onStart(selectedArray, selectedIndex, selectedOpts);

			if (ret === false) {
				busy = false;
				return;
			} else if (typeof ret == 'object') {
				selectedOpts = $.extend(selectedOpts, ret);
			}

			title = selectedOpts.title || (obj.nodeName ? $(obj).attr('title') : obj.title) || '';

			if (obj.nodeName && !selectedOpts.orig) {
				selectedOpts.orig = $(obj).children("img:first").length ? $(obj).children("img:first") : $(obj);
			}

			if (title === '' && selectedOpts.orig && selectedOpts.titleFromAlt) {
				title = selectedOpts.orig.attr('alt');
			}

			href = selectedOpts.href || (obj.nodeName ? $(obj).attr('href') : obj.href) || null;

			if ((/^(?:javascript)/i).test(href) || href == '#') {
				href = null;
			}

			if (selectedOpts.type) {
				type = selectedOpts.type;

				if (!href) {
					href = selectedOpts.content;
				}

			} else if (selectedOpts.content) {
				type = 'html';

			} else if (href) {
				if (href.match(imgRegExp)) {
					type = 'image';

				} else if (href.match(swfRegExp)) {
					type = 'swf';

				} else if ($(obj).hasClass("iframe")) {
					type = 'iframe';

				} else if (href.indexOf("#") === 0) {
					type = 'inline';

				} else {
					type = 'ajax';
				}
			}

			if (!type) {
				_error();
				return;
			}

			if (type == 'inline') {

				obj	= href.substr(href.indexOf("#"));
				type = $(obj).length > 0 ? 'inline' : 'ajax';
			}

			selectedOpts.type = type;
			selectedOpts.href = href;
			selectedOpts.title = title;

			if (selectedOpts.autoDimensions) {
				if (selectedOpts.type == 'html' || selectedOpts.type == 'inline' || selectedOpts.type == 'ajax') {
					selectedOpts.width = 'auto';
					selectedOpts.height = 'auto';
				} else {
					selectedOpts.autoDimensions = false;	
				}
			}

			if (selectedOpts.modal) {
				selectedOpts.overlayShow = true;
				selectedOpts.hideOnOverlayClick = false;
				selectedOpts.hideOnContentClick = false;
				selectedOpts.enableEscapeButton = false;
				selectedOpts.showCloseButton = false;
			}

			selectedOpts.padding = parseInt(selectedOpts.padding, 10);
			selectedOpts.margin = parseInt(selectedOpts.margin, 10);

			tmp.css('padding', (selectedOpts.padding + selectedOpts.margin));

			$('.fancybox-inline-tmp').unbind('fancybox-cancel').bind('fancybox-change', function() {
				$(this).replaceWith(content.children());				
			});

			switch (type) {
				case 'html' :
					tmp.html( selectedOpts.content );
					_process_inline();
				break;

				case 'inline' :
					if ( $(obj).parent().is('#fancybox-content') === true) {
						busy = false;
						return;
					}

					$('<div class="fancybox-inline-tmp" />')
						.hide()
						.insertBefore( $(obj) )
						.bind('fancybox-cleanup', function() {
							$(this).replaceWith(content.children());
						}).bind('fancybox-cancel', function() {
							$(this).replaceWith(tmp.children());
						});

					$(obj).appendTo(tmp);

					_process_inline();
				break;

				case 'image':
					busy = false;

					$.fancybox.showActivity();

					imgPreloader = new Image();

					imgPreloader.onerror = function() {
						_error();
					};

					imgPreloader.onload = function() {
						busy = true;

						imgPreloader.onerror = imgPreloader.onload = null;

						_process_image();
					};

					imgPreloader.src = href;
				break;

				case 'swf':
					selectedOpts.scrolling = 'no';

					str = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="' + selectedOpts.width + '" height="' + selectedOpts.height + '"><param name="movie" value="' + href + '"></param>';
					emb = '';

					$.each(selectedOpts.swf, function(name, val) {
						str += '<param name="' + name + '" value="' + val + '"></param>';
						emb += ' ' + name + '="' + val + '"';
					});

					str += '<embed src="' + href + '" type="application/x-shockwave-flash" width="' + selectedOpts.width + '" height="' + selectedOpts.height + '"' + emb + '></embed></object>';

					tmp.html(str);

					_process_inline();
				break;

				case 'ajax':
					busy = false;

					$.fancybox.showActivity();

					selectedOpts.ajax.win = selectedOpts.ajax.success;

					ajaxLoader = $.ajax($.extend({}, selectedOpts.ajax, {
						url	: href,
						data : selectedOpts.ajax.data || {},
						error : function(XMLHttpRequest, textStatus, errorThrown) {
							if ( XMLHttpRequest.status > 0 ) {
								_error();
							}
						},
						success : function(data, textStatus, XMLHttpRequest) {
							var o = typeof XMLHttpRequest == 'object' ? XMLHttpRequest : ajaxLoader;
							if (o.status == 200) {
								if ( typeof selectedOpts.ajax.win == 'function' ) {
									ret = selectedOpts.ajax.win(href, data, textStatus, XMLHttpRequest);

									if (ret === false) {
										loading.hide();
										return;
									} else if (typeof ret == 'string' || typeof ret == 'object') {
										data = ret;
									}
								}

								tmp.html( data );
								_process_inline();
							}
						}
					}));

				break;

				case 'iframe':
					_show();
				break;
			}
		},

		_process_inline = function() {
			var
				w = selectedOpts.width,
				h = selectedOpts.height;

			if (w.toString().indexOf('%') > -1) {
				w = parseInt( ($(window).width() - (selectedOpts.margin * 2)) * parseFloat(w) / 100, 10) + 'px';

			} else {
				w = w == 'auto' ? 'auto' : w + 'px';	
			}

			if (h.toString().indexOf('%') > -1) {
				h = parseInt( ($(window).height() - (selectedOpts.margin * 2)) * parseFloat(h) / 100, 10) + 'px';

			} else {
				h = h == 'auto' ? 'auto' : h + 'px';	
			}
			
			tmp.wrapInner('<div style="width:' + w + ';height:' + h + ';overflow: ' + (selectedOpts.scrolling == 'auto' ? 'auto' : (selectedOpts.scrolling == 'yes' ? 'scroll' : 'hidden')) + ';position:relative;"></div>');

			selectedOpts.width = tmp.width();
			selectedOpts.height = tmp.height();

			_show();
		},

		_process_image = function() {
			selectedOpts.width = imgPreloader.width;
			selectedOpts.height = imgPreloader.height;

			$("<img />").attr({
				'id' : 'fancybox-img',
				'src' : imgPreloader.src,
				'alt' : selectedOpts.title
			}).appendTo( tmp );

			_show();
		},

		_show = function() {
			var pos, equal;

			loading.hide();

			if (wrap.is(":visible") && false === currentOpts.onCleanup(currentArray, currentIndex, currentOpts)) {
				$.event.trigger('fancybox-cancel');

				busy = false;
				return;
			}

			busy = true;

			$(content.add( overlay )).unbind();

			$(window).unbind("resize.fb scroll.fb");
			$(document).unbind('keydown.fb');

			if (wrap.is(":visible") && currentOpts.titlePosition !== 'outside') {
				wrap.css('height', wrap.height());
			}

			currentArray = selectedArray;
			currentIndex = selectedIndex;
			currentOpts = selectedOpts;

			if (currentOpts.overlayShow) {
				overlay.css({
					'background-color' : currentOpts.overlayColor,
					'opacity' : currentOpts.overlayOpacity,
					'cursor' : currentOpts.hideOnOverlayClick ? 'pointer' : 'auto',
					'height' : $(document).height()
				});

				if (!overlay.is(':visible')) {
					if (isIE6) {
						$('select:not(#fancybox-tmp select)').filter(function() {
							return this.style.visibility !== 'hidden';
						}).css({'visibility' : 'hidden'}).one('fancybox-cleanup', function() {
							this.style.visibility = 'inherit';
						});
					}

					overlay.show();
				}
			} else {
				overlay.hide();
			}

			final_pos = _get_zoom_to();

			_process_title();

			if (wrap.is(":visible")) {
				$( close.add( nav_left ).add( nav_right ) ).hide();

				pos = wrap.position(),

				start_pos = {
					top	 : pos.top,
					left : pos.left,
					width : wrap.width(),
					height : wrap.height()
				};
				
				equal = (start_pos.width == final_pos.width && start_pos.height == final_pos.height);

				content.fadeTo(currentOpts.changeFade, 0.3, function() {
					var finish_resizing = function() {
						content.html( tmp.contents() ).fadeTo(currentOpts.changeFade, 1, _finish);
					};

					$.event.trigger('fancybox-change');

					content
						.empty()
						.removeAttr('filter')
						.css({
							'border-width' : currentOpts.padding,
							'width'	: final_pos.width - currentOpts.padding * 2,
							'height' : selectedOpts.autoDimensions ? 'auto' : final_pos.height - titleHeight - currentOpts.padding * 2
						});

					if (equal) {
						finish_resizing();

					} else {
						fx.prop = 0;

						$(fx).animate({prop: 1}, {
							 duration : currentOpts.changeSpeed,
							 easing : currentOpts.easingChange,
							 step : _draw,
							 complete : finish_resizing
						});
					}
				});

				return;
			}

			wrap.removeAttr("style");

			content.css('border-width', currentOpts.padding);

			if (currentOpts.transitionIn == 'elastic') {
				start_pos = _get_zoom_from();

				content.html( tmp.contents() );

				wrap.show();

				if (currentOpts.opacity) {
					final_pos.opacity = 0;
				}

				fx.prop = 0;

				$(fx).animate({prop: 1}, {
					 duration : currentOpts.speedIn,
					 easing : currentOpts.easingIn,
					 step : _draw,
					 complete : _finish
				});

				return;
			}

			if (currentOpts.titlePosition == 'inside' && titleHeight > 0) {	
				title.show();	
			}
			
			content
				.css({
					'width' : final_pos.width - currentOpts.padding * 2,
					'height' : selectedOpts.autoDimensions ? 'auto' : final_pos.height - titleHeight - currentOpts.padding * 2
				})
				.html( tmp.contents() );

			wrap
				.css(final_pos)
				.fadeIn( currentOpts.transitionIn == 'none' ? 0 : currentOpts.speedIn, _finish );
		},

		_format_title = function(title) {
			if (title && title.length) {
				if (currentOpts.titlePosition == 'float') {
					return '<table id="fancybox-title-float-wrap" cellpadding="0" cellspacing="0"><tr><td id="fancybox-title-float-left"></td><td id="fancybox-title-float-main">' + title + '</td><td id="fancybox-title-float-right"></td></tr></table>';
				}

				return '<div id="fancybox-title-' + currentOpts.titlePosition + '">' + title + '</div>';
			}

			return false;
		},

		_process_title = function() {
			titleStr = currentOpts.title || '';
			titleHeight = 0;

			title
				.empty()
				.removeAttr('style')
				.removeClass();

			if (currentOpts.titleShow === false) {
				title.hide();
				return;
			}

			titleStr = $.isFunction(currentOpts.titleFormat) ? currentOpts.titleFormat(titleStr, currentArray, currentIndex, currentOpts) : _format_title(titleStr);

			if (!titleStr || titleStr === '') {
				title.hide();
				return;
			}

			title
				.addClass('fancybox-title-' + currentOpts.titlePosition)
				.html( titleStr )
				.appendTo( 'body' )
				.show();

			switch (currentOpts.titlePosition) {
				case 'inside':
					title
						.css({
							'width' : final_pos.width - (currentOpts.padding * 2),
							'marginLeft' : currentOpts.padding,
							'marginRight' : currentOpts.padding
						});

					titleHeight = title.outerHeight(true);

					title.appendTo( outer );

					final_pos.height += titleHeight;
				break;

				case 'over':
					title
						.css({
							'marginLeft' : currentOpts.padding,
							'width'	: final_pos.width - (currentOpts.padding * 2),
							'bottom' : currentOpts.padding
						})
						.appendTo( outer );
				break;

				case 'float':
					title
						.css('left', parseInt((title.width() - final_pos.width - 40)/ 2, 10) * -1)
						.appendTo( wrap );
				break;

				default:
					title
						.css({
							'width' : final_pos.width - (currentOpts.padding * 2),
							'paddingLeft' : currentOpts.padding,
							'paddingRight' : currentOpts.padding
						})
						.appendTo( wrap );
				break;
			}

			title.hide();
		},

		_set_navigation = function() {
			if (currentOpts.enableEscapeButton || currentOpts.enableKeyboardNav) {
				$(document).bind('keydown.fb', function(e) {
					if (e.keyCode == 27 && currentOpts.enableEscapeButton) {
						e.preventDefault();
						$.fancybox.close();

					} else if ((e.keyCode == 37 || e.keyCode == 39) && currentOpts.enableKeyboardNav && e.target.tagName !== 'INPUT' && e.target.tagName !== 'TEXTAREA' && e.target.tagName !== 'SELECT') {
						e.preventDefault();
						$.fancybox[ e.keyCode == 37 ? 'prev' : 'next']();
					}
				});
			}

			if (!currentOpts.showNavArrows) { 
				nav_left.hide();
				nav_right.hide();
				return;
			}

			if ((currentOpts.cyclic && currentArray.length > 1) || currentIndex !== 0) {
				nav_left.show();
			}

			if ((currentOpts.cyclic && currentArray.length > 1) || currentIndex != (currentArray.length -1)) {
				nav_right.show();
			}
		},

		_finish = function () {
			if (!$.support.opacity) {
				content.get(0).style.removeAttribute('filter');
				wrap.get(0).style.removeAttribute('filter');
			}

			if (selectedOpts.autoDimensions) {
				content.css('height', 'auto');
			}

			wrap.css('height', 'auto');

			if (titleStr && titleStr.length) {
				title.show();
			}

			if (currentOpts.showCloseButton) {
				close.show();
			}

			_set_navigation();
	
			if (currentOpts.hideOnContentClick)	{
				content.bind('click', $.fancybox.close);
			}

			if (currentOpts.hideOnOverlayClick)	{
				overlay.bind('click', $.fancybox.close);
			}

			$(window).bind("resize.fb", $.fancybox.resize);

			if (currentOpts.centerOnScroll) {
				$(window).bind("scroll.fb", $.fancybox.center);
			}

			if (currentOpts.type == 'iframe') {
				$('<iframe id="fancybox-frame" name="fancybox-frame' + new Date().getTime() + '" frameborder="0" hspace="0" ' + ($.browser.msie ? 'allowtransparency="true""' : '') + ' scrolling="' + selectedOpts.scrolling + '" src="' + currentOpts.href + '"></iframe>').appendTo(content);
			}

			wrap.show();

			busy = false;

			$.fancybox.center();

			currentOpts.onComplete(currentArray, currentIndex, currentOpts);

			_preload_images();
		},

		_preload_images = function() {
			var href, 
				objNext;

			if ((currentArray.length -1) > currentIndex) {
				href = currentArray[ currentIndex + 1 ].href;

				if (typeof href !== 'undefined' && href.match(imgRegExp)) {
					objNext = new Image();
					objNext.src = href;
				}
			}

			if (currentIndex > 0) {
				href = currentArray[ currentIndex - 1 ].href;

				if (typeof href !== 'undefined' && href.match(imgRegExp)) {
					objNext = new Image();
					objNext.src = href;
				}
			}
		},

		_draw = function(pos) {
			var dim = {
				width : parseInt(start_pos.width + (final_pos.width - start_pos.width) * pos, 10),
				height : parseInt(start_pos.height + (final_pos.height - start_pos.height) * pos, 10),

				top : parseInt(start_pos.top + (final_pos.top - start_pos.top) * pos, 10),
				left : parseInt(start_pos.left + (final_pos.left - start_pos.left) * pos, 10)
			};

			if (typeof final_pos.opacity !== 'undefined') {
				dim.opacity = pos < 0.5 ? 0.5 : pos;
			}

			wrap.css(dim);

			content.css({
				'width' : dim.width - currentOpts.padding * 2,
				'height' : dim.height - (titleHeight * pos) - currentOpts.padding * 2
			});
		},

		_get_viewport = function() {
			return [
				$(window).width() - (currentOpts.margin * 2),
				$(window).height() - (currentOpts.margin * 2),
				$(document).scrollLeft() + currentOpts.margin,
				$(document).scrollTop() + currentOpts.margin
			];
		},

		_get_zoom_to = function () {
			var view = _get_viewport(),
				to = {},
				resize = currentOpts.autoScale,
				double_padding = currentOpts.padding * 2,
				ratio;

			if (currentOpts.width.toString().indexOf('%') > -1) {
				to.width = parseInt((view[0] * parseFloat(currentOpts.width)) / 100, 10);
			} else {
				to.width = currentOpts.width + double_padding;
			}

			if (currentOpts.height.toString().indexOf('%') > -1) {
				to.height = parseInt((view[1] * parseFloat(currentOpts.height)) / 100, 10);
			} else {
				to.height = currentOpts.height + double_padding;
			}

			if (resize && (to.width > view[0] || to.height > view[1])) {
				if (selectedOpts.type == 'image' || selectedOpts.type == 'swf') {
					ratio = (currentOpts.width ) / (currentOpts.height );

					if ((to.width ) > view[0]) {
						to.width = view[0];
						to.height = parseInt(((to.width - double_padding) / ratio) + double_padding, 10);
					}

					if ((to.height) > view[1]) {
						to.height = view[1];
						to.width = parseInt(((to.height - double_padding) * ratio) + double_padding, 10);
					}

				} else {
					to.width = Math.min(to.width, view[0]);
					to.height = Math.min(to.height, view[1]);
				}
			}

			to.top = parseInt(Math.max(view[3] - 20, view[3] + ((view[1] - to.height - 40) * 0.5)), 10);
			to.left = parseInt(Math.max(view[2] - 20, view[2] + ((view[0] - to.width - 40) * 0.5)), 10);

			return to;
		},

		_get_obj_pos = function(obj) {
			var pos = obj.offset();

			pos.top += parseInt( obj.css('paddingTop'), 10 ) || 0;
			pos.left += parseInt( obj.css('paddingLeft'), 10 ) || 0;

			pos.top += parseInt( obj.css('border-top-width'), 10 ) || 0;
			pos.left += parseInt( obj.css('border-left-width'), 10 ) || 0;

			pos.width = obj.width();
			pos.height = obj.height();

			return pos;
		},

		_get_zoom_from = function() {
			var orig = selectedOpts.orig ? $(selectedOpts.orig) : false,
				from = {},
				pos,
				view;

			if (orig && orig.length) {
				pos = _get_obj_pos(orig);

				from = {
					width : pos.width + (currentOpts.padding * 2),
					height : pos.height + (currentOpts.padding * 2),
					top	: pos.top - currentOpts.padding - 20,
					left : pos.left - currentOpts.padding - 20
				};

			} else {
				view = _get_viewport();

				from = {
					width : currentOpts.padding * 2,
					height : currentOpts.padding * 2,
					top	: parseInt(view[3] + view[1] * 0.5, 10),
					left : parseInt(view[2] + view[0] * 0.5, 10)
				};
			}

			return from;
		},

		_animate_loading = function() {
			if (!loading.is(':visible')){
				clearInterval(loadingTimer);
				return;
			}

			$('div', loading).css('top', (loadingFrame * -40) + 'px');

			loadingFrame = (loadingFrame + 1) % 12;
		};

	/*
	 * Public methods 
	 */

	$.fn.fancybox = function(options) {
		if (!$(this).length) {
			return this;
		}
		$(this)
			.data('fancybox', $.extend({}, options, ($.metadata ? $(this).metadata() : {})))
			.unbind('click.fb')
			.bind('click.fb', function(e) {
				e.preventDefault();

				if (busy) {
					return;
				}

				busy = true;

				$(this).blur();

				selectedArray = [];
				selectedIndex = 0;

				var rel = $(this).attr('rel') || '';

				if (!rel || rel == '' || rel === 'nofollow') {
					selectedArray.push(this);

				} else {
					selectedArray = $("a[rel=" + rel + "], area[rel=" + rel + "]");
					selectedIndex = selectedArray.index( this );
				}

				_start();

				return;
			});

		return this;
	};

	$.fancybox = function(obj) {
		var opts;

		if (busy) {
			return;
		}

		busy = true;
		opts = typeof arguments[1] !== 'undefined' ? arguments[1] : {};

		selectedArray = [];
		selectedIndex = parseInt(opts.index, 10) || 0;

		if ($.isArray(obj)) {
			for (var i = 0, j = obj.length; i < j; i++) {
				if (typeof obj[i] == 'object') {
					$(obj[i]).data('fancybox', $.extend({}, opts, obj[i]));
				} else {
					obj[i] = $({}).data('fancybox', $.extend({content : obj[i]}, opts));
				}
			}

			selectedArray = jQuery.merge(selectedArray, obj);

		} else {
			if (typeof obj == 'object') {
				$(obj).data('fancybox', $.extend({}, opts, obj));
			} else {
				obj = $({}).data('fancybox', $.extend({content : obj}, opts));
			}

			selectedArray.push(obj);
		}

		if (selectedIndex > selectedArray.length || selectedIndex < 0) {
			selectedIndex = 0;
		}

		_start();
	};

	$.fancybox.showActivity = function() {
		clearInterval(loadingTimer);

		loading.show();
		loadingTimer = setInterval(_animate_loading, 66);
	};

	$.fancybox.hideActivity = function() {
		loading.hide();
	};

	$.fancybox.next = function() {
		return $.fancybox.pos( currentIndex + 1);
	};

	$.fancybox.prev = function() {
		return $.fancybox.pos( currentIndex - 1);
	};

	$.fancybox.pos = function(pos) {
		if (busy) {
			return;
		}

		pos = parseInt(pos);

		selectedArray = currentArray;

		if (pos > -1 && pos < currentArray.length) {
			selectedIndex = pos;
			_start();

		} else if (currentOpts.cyclic && currentArray.length > 1) {
			selectedIndex = pos >= currentArray.length ? 0 : currentArray.length - 1;
			_start();
		}

		return;
	};

	$.fancybox.cancel = function() {
		if (busy) {
			return;
		}

		busy = true;

		$.event.trigger('fancybox-cancel');

		_abort();

		selectedOpts.onCancel(selectedArray, selectedIndex, selectedOpts);

		busy = false;
	};

	// Note: within an iframe use - parent.$.fancybox.close();
	$.fancybox.close = function() {
		if (busy || wrap.is(':hidden')) {
			return;
		}

		busy = true;

		if (currentOpts && false === currentOpts.onCleanup(currentArray, currentIndex, currentOpts)) {
			busy = false;
			return;
		}

		_abort();

		$(close.add( nav_left ).add( nav_right )).hide();

		$(content.add( overlay )).unbind();

		$(window).unbind("resize.fb scroll.fb");
		$(document).unbind('keydown.fb');

		content.find('iframe').attr('src', isIE6 && /^https/i.test(window.location.href || '') ? 'javascript:void(false)' : 'about:blank');

		if (currentOpts.titlePosition !== 'inside') {
			title.empty();
		}

		wrap.stop();

		function _cleanup() {
			overlay.fadeOut('fast');

			title.empty().hide();
			wrap.hide();

			$.event.trigger('fancybox-cleanup');

			content.empty();

			currentOpts.onClosed(currentArray, currentIndex, currentOpts);

			currentArray = selectedOpts	= [];
			currentIndex = selectedIndex = 0;
			currentOpts = selectedOpts	= {};

			busy = false;
		}

		if (currentOpts.transitionOut == 'elastic') {
			start_pos = _get_zoom_from();

			var pos = wrap.position();

			final_pos = {
				top	 : pos.top ,
				left : pos.left,
				width :	wrap.width(),
				height : wrap.height()
			};

			if (currentOpts.opacity) {
				final_pos.opacity = 1;
			}

			title.empty().hide();

			fx.prop = 1;

			$(fx).animate({ prop: 0 }, {
				 duration : currentOpts.speedOut,
				 easing : currentOpts.easingOut,
				 step : _draw,
				 complete : _cleanup
			});

		} else {
			wrap.fadeOut( currentOpts.transitionOut == 'none' ? 0 : currentOpts.speedOut, _cleanup);
		}
	};

	$.fancybox.resize = function() {
		if (overlay.is(':visible')) {
			overlay.css('height', $(document).height());
		}

		$.fancybox.center(true);
	};

	$.fancybox.center = function() {
		var view, align;

		if (busy) {
			return;	
		}

		align = arguments[0] === true ? 1 : 0;
		view = _get_viewport();

		if (!align && (wrap.width() > view[0] || wrap.height() > view[1])) {
			return;	
		}

		wrap
			.stop()
			.animate({
				'top' : parseInt(Math.max(view[3] - 20, view[3] + ((view[1] - content.height() - 40) * 0.5) - currentOpts.padding)),
				'left' : parseInt(Math.max(view[2] - 20, view[2] + ((view[0] - content.width() - 40) * 0.5) - currentOpts.padding))
			}, typeof arguments[0] == 'number' ? arguments[0] : 200);
	};

	$.fancybox.init = function() {
		if ($("#fancybox-wrap").length) {
			return;
		}

		$('body').append(
			tmp	= $('<div id="fancybox-tmp"></div>'),
			loading	= $('<div id="fancybox-loading"><div></div></div>'),
			overlay	= $('<div id="fancybox-overlay"></div>'),
			wrap = $('<div id="fancybox-wrap"></div>')
		);

		outer = $('<div id="fancybox-outer"></div>')
			.append('<div class="fancybox-bg" id="fancybox-bg-n"></div><div class="fancybox-bg" id="fancybox-bg-ne"></div><div class="fancybox-bg" id="fancybox-bg-e"></div><div class="fancybox-bg" id="fancybox-bg-se"></div><div class="fancybox-bg" id="fancybox-bg-s"></div><div class="fancybox-bg" id="fancybox-bg-sw"></div><div class="fancybox-bg" id="fancybox-bg-w"></div><div class="fancybox-bg" id="fancybox-bg-nw"></div>')
			.appendTo( wrap );

		outer.append(
			content = $('<div id="fancybox-content"></div>'),
			close = $('<a id="fancybox-close"></a>'),
			title = $('<div id="fancybox-title"></div>'),

			nav_left = $('<a href="javascript:;" id="fancybox-left"><span class="fancy-ico" id="fancybox-left-ico"></span></a>'),
			nav_right = $('<a href="javascript:;" id="fancybox-right"><span class="fancy-ico" id="fancybox-right-ico"></span></a>')
		);

		close.click($.fancybox.close);
		loading.click($.fancybox.cancel);

		nav_left.click(function(e) {
			e.preventDefault();
			$.fancybox.prev();
		});

		nav_right.click(function(e) {
			e.preventDefault();
			$.fancybox.next();
		});

		if ($.fn.mousewheel) {
			wrap.bind('mousewheel.fb', function(e, delta) {
				if (busy) {
					e.preventDefault();

				} else if ($(e.target).get(0).clientHeight == 0 || $(e.target).get(0).scrollHeight === $(e.target).get(0).clientHeight) {
					e.preventDefault();
					$.fancybox[ delta > 0 ? 'prev' : 'next']();
				}
			});
		}

		if (!$.support.opacity) {
			wrap.addClass('fancybox-ie');
		}

		if (isIE6) {
			loading.addClass('fancybox-ie6');
			wrap.addClass('fancybox-ie6');

			$('<iframe id="fancybox-hide-sel-frame" src="' + (/^https/i.test(window.location.href || '') ? 'javascript:void(false)' : 'about:blank' ) + '" scrolling="no" border="0" frameborder="0" tabindex="-1"></iframe>').prependTo(outer);
		}
	};

	$.fn.fancybox.defaults = {
		padding : 10,
		margin : 40,
		opacity : false,
		modal : false,
		cyclic : false,
		scrolling : 'auto',	// 'auto', 'yes' or 'no'

		width : 560,
		height : 340,

		autoScale : true,
		autoDimensions : true,
		centerOnScroll : false,

		ajax : {},
		swf : { wmode: 'transparent' },

		hideOnOverlayClick : true,
		hideOnContentClick : false,

		overlayShow : true,
		overlayOpacity : 0.7,
		overlayColor : '#777',

		titleShow : true,
		titlePosition : 'float', // 'float', 'outside', 'inside' or 'over'
		titleFormat : null,
		titleFromAlt : false,

		transitionIn : 'fade', // 'elastic', 'fade' or 'none'
		transitionOut : 'fade', // 'elastic', 'fade' or 'none'

		speedIn : 300,
		speedOut : 300,

		changeSpeed : 300,
		changeFade : 'fast',

		easingIn : 'swing',
		easingOut : 'swing',

		showCloseButton	 : true,
		showNavArrows : true,
		enableEscapeButton : true,
		enableKeyboardNav : true,

		onStart : function(){},
		onCancel : function(){},
		onComplete : function(){},
		onCleanup : function(){},
		onClosed : function(){},
		onError : function(){}
	};

	$(document).ready(function() {
		$.fancybox.init();
	});

})(jQuery);
(function ($) {
	
	$.cachedAjaxLightbox = {
	
		onCompleteFunctions: [],
		extensions: {},	
		
		namespace: 'cachedAjaxLightbox',
	
		addOnComplete: function (func) {
			$.cachedAjaxLightbox.onCompleteFunctions.push(func);
		},
		
		addExtension: function (key, opts, func) {
			var regexp	= opts && opts.regexp ? opts.regexp : opts;
				options	= $.extend({}, { regexp: regexp }, opts);
		
			$.cachedAjaxLightbox.extensions[key] = $.extend({}, options, {func: func});
		},
		
		defaults : {
			width			: 600,
			height			: 400,
			videoWidth		: 640,
			videoHeight		: 385,
			removeElement	: 'meta, base, title, #header, #footer',
			fancybox: {
				'overlayColor'	: '#fff',
				'overlayOpacity': 0.8
			}
		},
		
		regExpOnclickWidth	: /width=([0-9]+)/,
		regExpOnclickHeight	: /height=([0-9]+)/,
		
		/**
		 * tmp-container for all cached lightboxes
		 */
		createTempContainer: function () {
			// tmp-container
			if ($('#cachedLightbox-tmp').length) { 
				return;
			}
			
			$('<div />', { 'id'	: 'cachedLightbox-tmp' })
				.hide()
				.appendTo('body');
		},
		
		/**
		 * tmp-Container one cached lightbox
		 */
		createLightboxTemp: function (settings) {
			var $tmp = null;

			name = settings.i.toString();
			
			this.createTempContainer();
			
			if ($('#lightbox-content-' + name.replace('.', '-') + '-container').length) { 
				return;
			}

			$tmp = $('<div />', {
					'id' : 'lightbox-content-' + name.replace('.', '-') + '-container'
				})
				.prepend('<div id="lightbox-content-' + name.replace('.', '-') + '"></div>');
			
			$tmp
				.fancybox($.extend({}, settings.fancybox, {
					'content'			: $('#lightbox-content-' + name.replace('.', '-')).html(),
					'autoDimensions'	: false,
					'height'			: settings.height,
					'width'				: settings.width,
					'onComplete'		: function () {
						var $content = $('#fancybox-content');
						
						// fix height => browser window is smaller than fancybox 
						if (settings.height > $content.height()) {
							$content.height(settings.height);
						}
						
						// fix height => browser window is smaller than fancybox 
						if (settings.width > $content.width()) {
							$content.width(settings.width);
						}
						
						if ($.cachedAjaxLightbox.onCompleteFunctions.length) {
							for (var i = 0; i < $.cachedAjaxLightbox.onCompleteFunctions.length; i++) {
								$.cachedAjaxLightbox.onCompleteFunctions[i]($content);
							}
						}
					}})
				)
				.appendTo($('#cachedLightbox-tmp'));
				
			return $tmp;
		},
		
		/**
		 * set lightbox dimensions. check the onclick-attribute if not set.
		 */
		setDimensions: function (settings, opts) {
			
			opts = opts || settings;
			
			// set video defaults
			if (opts && opts.video) {
				settings.width = settings.videoWidth;
				settings.height = settings.videoHeight;
			}
			
			// set option width
			if (opts && opts.width) {
				settings.width = opts.width;
			}
			
			// set width from onlick-attribute
			if (opts && opts.onclick) {
				settings.width = $.cachedAjaxLightbox.regExpOnclickWidth.test(opts.onclick) ? parseInt(opts.onclick.match($.cachedAjaxLightbox.regExpOnclickWidth)[1], 10) : settings.width;
			}
			
			// set option height
			if (opts && opts.height) {
				this.boxHeight = opts.height;
			}
			
			// set height from onlick-attribute
			if (opts && opts.onclick) {
				settings.height = $.cachedAjaxLightbox.regExpOnclickHeight.test(opts.onclick) ? parseInt(opts.onclick.match($.cachedAjaxLightbox.regExpOnclickHeight)[1], 10) : settings.height;
			}
			
			// remove onlick
			if (opts && opts.onclick) {
				delete opts.onclick;
			}
			
			return settings;
		},
		
		getNamespacedEvent: function (name) {
			name = name || '';
			
			return name + '.' + $.cachedAjaxLightbox.namespace;
		},
		
		/**
		 * init cached lightbox via jQuery(selector)
		 */
		initElement: function (i, $this, settings) {
			
			var	$tmp = $.cachedAjaxLightbox.createLightboxTemp(settings).data('chachedLightbox', settings);
			
			// load content and trigger box
			$this
				.removeAttr('onclick')
				.click(function (event) {
					event.preventDefault();
					
					var rscript = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;
					
					// load
					if (!$tmp.data($.cachedAjaxLightbox.getNamespacedEvent('loaded'))) {
						$.fancybox.showActivity();
						
						$.get($this.attr('href'), function(response) {
							var lightboxHref = '#lightbox-content-' + i.toString();
							
							$this.attr('href', lightboxHref);
							$tmp.data($.cachedAjaxLightbox.getNamespacedEvent('loaded'), true);
							
							var $response = $(response),
								scripts = response
									// remove comments
									.replace('/<!--(.*)-->/Uis', '')
									// find scripts
									.match(rscript);
							
							if (scripts.length) {
								
								var $currentScripts = $('script'),
									baseHref = $('base').attr('href') || '';
									currentScriptSources = [],
									$newScripts = $();
								
								// collect script sources
								$currentScripts.each(function (i, script) {
									var src			= script.src,
										paramPos	= src.indexOf('?');
										
									if (src && src != '') {
										if (paramPos > -1) {
											src = src.substr(0, paramPos);
										}
										
										src = src.replace(baseHref, '');
										
										currentScriptSources.push(src);
									}
								});
								
								$.each(scripts, function (i, script) {
									var $script		= $(script),
										src			= $script.attr('src'),
										paramPos;
										
									if (src && src != '') {
										
										paramPos = src.indexOf('?');
										
										if (paramPos > -1) {
											src = src.substr(0, paramPos);
										}
									
										if (src && $.inArray(src, currentScriptSources) == -1) {
											if (src != 'Scripts/jquery.fancybox-1.3.1.pack.js') {
												
												if (src == 'Scripts/carousel.js') {
													$script.attr('src', 'http://www.sollux.be/Scripts/carousel.js');
												}
												
												/*if ($script.attr('src').substr(0, 4) != 'http') {
													// absolute paths
													$script.attr('src', '/' + $script.attr('src'));
												}*/
												
												// remove old script block. firefox can't add it twice
												response.replace(script, '');
												$newScripts = $newScripts.add($script);
											}	
										}
									}
								});
								
								if ($newScripts.length) {
									$('body').append($newScripts);
								}
							}
							$("#lightbox-content-" + i.toString(), $tmp)
								.html($response)
								.find(settings.removeElement)
									.remove();
							
							// set fancybox content manually. Prevents an error if the content hasn't been loaded
							var fancybox = $tmp.data('fancybox');
							fancybox.width = settings.width;
							fancybox.height = settings.height;
							fancybox.type	= 'inline';
							fancybox.href	= lightboxHref;
							fancybox.content = $(this).html();
							
							$tmp.trigger('click');
						});
					}
					else {
						$tmp.trigger('click');
					}
					
					return false;
				});
		}
		
		/**
		 * init youtube video lightbox
		 */
	};
	
	/**
	 * jQuery.fn
	 */
	$.fn.cachedAjaxLightbox = function (options) {	
		return this.each(function (i) {
			
			var settings = $.extend({}, $.cachedAjaxLightbox.defaults, options),
				handledByExtension = false,
				link = this,
				$this = $(this);
				
			
			settings.onclick = $this.attr('onclick') ? $this.attr('onclick').toString() : false;
			settings.i = i;
			
			// check extensions
			if (!$.isEmptyObject($.cachedAjaxLightbox.extensions)) {
				
				$.each($.cachedAjaxLightbox.extensions, function (key, ext) {
					var matched = false;
					
					if (typeof ext.regexp == 'string') {
						matched = link.href.match(ext.regexp);
						
					} else if ($.isFunction(ext.regexp)) {
						matched = ext.regexp.call(link);
					}
					
					if (matched) {
						// set flag
						handledByExtension = true;
						
						// update options
						settings = $.cachedAjaxLightbox.setDimensions(settings, ext.options);
						
						// handle
						ext.func.call($.cachedAjaxLightbox, i, $this, settings);
						return;
					}
				});
				
			}
			
			if (!handledByExtension) {
				// update options
				settings = $.cachedAjaxLightbox.setDimensions(settings);
				$.cachedAjaxLightbox.initElement(i, $this, settings);
			}
		});
	};
	
	$.cachedAjaxLightbox.addOnComplete(function () {
		if (Cufon) {
			Cufon.refresh();
		}
	});
	
	$.cachedAjaxLightbox.addExtension('youtube', {
		regexp	: function () {
			return this.href.match('youtube');
		},
		options	: {
			video : true
		}
	}, function (i, $this, settings) {
							
		$this.click(function (event) {
			event.preventDefault();
			
			// hide infos by default
			var href = this.href + '&showinfo=0';

			/*
			 * Youtube parameter options:
			 *
			 * fullscreen button
			 *		href += '&fs=1';
			 *
			 * autoplay
			 *		href += '&autoplay=1';
			 *
			 * hide infos (title, rating)
			 *		href += '&showinfo=0';
			 *
			 * Quality:
			 *	- 320x240:
			 *		href += '&fmt=6';
			 *	- 480x360:
			 *		href += '&fmt=18';
			 *	- 720 HD:
			 *		href += '&fmt=22';
			 *		href += '&hd=1';
			 */	
			$.fancybox($.extend({}, settings.fancybox, {
				'padding'		: 0,
				'autoScale'		: false,
				'height'		: settings.height,
				'width'			: settings.width,
				'href'			: href.replace(new RegExp('watch\\?v=', 'i'), 'v/'),
				'type'			: 'swf',
				'swf'			: {
					'wmode'				: 'transparent',
					'allowfullscreen'	: 'true'
				}
			}));
			
			return false;

		});
	});
	
	// DOM ready -> looking for a.internal-link-lightbox and init lightbox
	$(function () {
		$('a.internal-link-lightbox').cachedAjaxLightbox();
	});
	
}(jQuery));
// Seminar structure
// jQuery Wrapper and DOM-Ready
(function ($) { $(function () {
	var itemSelector = '#seminaraufbau li';
	
	$('body')
		.delegate(itemSelector, 'mouseenter', function(){
			$(this).addClass('this-hover');
			$(this).prev().addClass('prev-hover');
		})	
		.delegate(itemSelector, 'mouseleave', function(){
			$(this).removeClass('this-hover');
			$(this).prev().removeClass('prev-hover');
		});
})})(jQuery);
/***************************************************************
*  Copyright notice
*
*  (c) 2008-2009 Clara Brocar <cbrocar@pagemachine.de>
*  (c) 2011 Helmut Hummel <typo3-ext@naw.info>
*  All rights reserved
*
*  This script is part of the TYPO3 project. The TYPO3 project is
*  free software; you can redistribute it and/or modify
*  it under the terms of the GNU General Public License as published by
*  the Free Software Foundation; either version 2 of the License, or
*  (at your option) any later version.
*
*  The GNU General Public License can be found at
*  http://www.gnu.org/copyleft/gpl.html.
*
*  This script is distributed in the hope that it will be useful,
*  but WITHOUT ANY WARRANTY; without even the implied warranty of
*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*  GNU General Public License for more details.
*
*  This copyright notice MUST APPEAR in all copies of the script!
***************************************************************/

/**
* Some code and inspiration taken from ClickHeat by labsmedia.com (published under GNU GPL)
*/

HeatmapPro = {
	init: function (options) {
		this.pageId = options.pageId;
		this.pageLanguageId = options.pageLanguageId;
		this.clickInterval = options.clickInterval || 1000;

		if (document.addEventListener) {
			document.addEventListener('mousedown', this.bind(this, this.logClick), false);
		} else if (document.attachEvent) {
			document.attachEvent('onmousedown', this.bind(this, this.logClick));
		}
	},

	bind: function (scope, fn) {
		return function () {
			fn.apply(scope, arguments);
		}
	},

	request: false,

	logClick: function (event) {
		var x = event.clientX;
		var y = event.clientY;
		var w;
		var h;
		var scrollyx;
		var scrolly;
		if (document.documentElement != undefined && document.documentElement.clientHeight != 0) {
			w = document.documentElement.clientWidth != undefined ? document.documentElement.clientWidth: window.innerWidth;
			h = document.documentElement.clientHeight != undefined ? document.documentElement.clientHeight: window.innerHeight;
			scrollx = window.pageXOffset == undefined ? document.documentElement.scrollLeft: window.pageXOffset;
			scrolly = window.pageYOffset == undefined ? document.documentElement.scrollTop: window.pageYOffset;
		} else {
			w = document.body.clientWidth != undefined ? document.body.clientWidth: window.innerWidth;
			h = document.body.clientHeight != undefined ? document.body.clientHeight: window.innerHeight;
			scrollx = window.pageXOffset == undefined ? document.body.scrollLeft: window.pageXOffset;
			scrolly = window.pageYOffset == undefined ? document.body.scrollTop: window.pageYOffset;
		}

		var realx = x + scrollx;
		var realy = y + scrolly;

		// only log once in a second
		time = new Date();
		if (time.getTime() - this.clickTime < this.clickInterval) {
			return true;
		}
		this.clickTime = time.getTime();

		// nicht loggen, wenn auf einen Scrollbalken geklickt wurde
		if (x > w || y > h) {
			return true;
		}

		if (!this.request) {
			// Ajax Request
			if (window.ActiveXObject) {
				try {
					// IE 6 and higher
					this.request = new ActiveXObject("MSXML2.XMLHTTP");
				} catch(e) {
					try {
						// IE 5
						this.request = new ActiveXObject("Microsoft.XMLHTTP");
					} catch(e) {
						this.request = false;
					}
				}
			} else if (window.XMLHttpRequest) {
				try {
					// Mozilla, Opera, Safari ...
					this.request = new XMLHttpRequest();
				} catch(e) {
					this.request = false;
				}
			}
		}

		if (!this.request) {
			//alert("An Error occured when trying to initialize XMLHttpRequest!");
			return false;
		} else {
			var params = 'eID=heatmap_fe&s=' + this.pageId + '&l=' + this.pageLanguageId + '&x=' + realx + '&y=' + realy + '&w=' + w;
			var url = 'index.php' + '?' + params;
			this.request.open('GET', url, true);
			this.request.send(null);
		}

		return true;
	}
}


/* <![CDATA[ */
			jQuery.noConflict();
			(function($) { 
				$(document).ready(function() {
				if ($("*").is(".jqfancybox")) { 
						$(".jqfancybox").fancybox({
							"padding": 0,
							"speedIn": 300,
							"speedOut": 300,
							"changeSpeed": 300,
							"transitionIn": "fade",
							"transitionOut": "fade",
							"titlePosition": "inside",
							"titleShow": true,
							"easingIn": "swing",
							"easingOut": "swing",
							"showCloseButton": true,
							"showNavArrows": true,
							"enableEscapeButton": true,
							"overlayShow": true,
							"overlayOpacity": 0.8,
							"overlayColor": "#fff",
							"centerOnScroll": false,
							"hideOnContentClick": false,
							 "titleFormat": "formatTitle"
				});
			 } 
			});})(jQuery);
			/* ]]> */

