




/**
 * project: dhl.de
 * type: javascript
 * description: loader for component based javascript (homepage)
 * @author: Heimann/Menzel, 2009.07.31
 * @copyright: dhl.de. All rights reserved.
 */

/*
	ColorBox v1.2.6 - a full featured, light-weight, customizable lightbox based on jQuery 1.3
	(c) 2009 Jack Moore : colorpowered.com
*/
(function(w){var t,j,I,B,s,G,a,d,L,f,v,b,C,F,H,o,h,A,i,g,J,K,c,n,z,e,x,k,D,p,r;function u(){z.css({position:"absolute",width:H.width(),height:H.height(),top:H.scrollTop(),left:H.scrollLeft()})}function m(){var M;function N(){F.text(I.slideshowStop).bind("cbox_complete",function(){C=setTimeout(w.fn.colorbox.next,I.slideshowSpeed)}).bind("cbox_load",function(){clearTimeout(C)}).one("click",function(){M();w(this).removeClass("hover")});J.removeClass("cboxSlideshow_off").addClass("cboxSlideshow_on")}M=function(){clearTimeout(C);F.text(I.slideshowStart).unbind("cbox_complete cbox_load").one("click",function(){N();C=setTimeout(w.fn.colorbox.next,I.slideshowSpeed);w(this).removeClass("hover")});J.removeClass("cboxSlideshow_on").addClass("cboxSlideshow_off")};if(I.slideshow&&b.length>1){if(I.slideshowAuto){N()}else{M()}}}function l(){if(w("#cboxInlineTemp").length>0){x.children().insertBefore("#cboxInlineTemp");w("#cboxInlineTemp").remove()}}function E(M){if(M.keyCode==37){M.preventDefault();A.click()}else{if(M.keyCode==39){M.preventDefault();h.click()}}}function y(M,N){N=N=="x"?document.documentElement.clientWidth:document.documentElement.clientHeight;return(typeof M=="string")?(M.match(/%/)?(N/100)*parseInt(M,10):parseInt(M,10)):M}function q(M){return I.photo?true:M.match(/\.(gif|png|jpg|jpeg|bmp)(?:\?([^#]*))?(?:#(.*))?$/i)}w(function(){w.fn.colorbox.init()});w.fn.colorbox=function(N,M){if(this.length){this.each(function(){var O=w(this).data("colorbox")?w.extend({},w(this).data("colorbox"),N):w.extend({},w.fn.colorbox.settings,N);w(this).data("colorbox",O).addClass("cboxelement")})}else{w(this).data("colorbox",w.extend({},w.fn.colorbox.settings,N))}w(this).unbind("click.colorbox").bind("click.colorbox",function(P){j=this;I=w(j).data("colorbox");j.blur();B=M?M:false;var O=I.rel?I.rel:j.rel;if(O&&O!="nofollow"){b=w(".cboxelement").filter(function(){var Q=w(this).data("colorbox").rel?w(this).data("colorbox").rel:this.rel;return(Q==O)});v=b.index(j);if(v<0){b=b.add(j);v=b.length-1}}else{b=w(j);v=0}if(!t){w.event.trigger("cbox_open");o.html(I.close);z.css({opacity:I.opacity}).show();t=true;w.fn.colorbox.position(y(I.initialWidth,"x"),y(I.initialHeight,"y"),0);if(w.browser.msie&&w.browser.version<7){H.bind("resize scroll",u)}}m();w.fn.colorbox.load();if(I.overlayClose===true){z.css({cursor:"pointer"}).click(w.fn.colorbox.close)}P.preventDefault()});if(N&&N.open){w(this).triggerHandler("click.colorbox")}return this};w.fn.colorbox.element=function(){return j};w.fn.colorbox.init=function(){H=w(window);w("body").prepend(z=w('<div id="cboxOverlay" />').hide(),J=w('<div id="colorbox" />'));K=w('<div id="cboxWrapper" />').appendTo(J).append(w("<div/>").append(w('<div id="cboxTopLeft"/>'),k=w('<div id="cboxTopCenter"/>'),w('<div id="cboxTopRight"/>')),D=w('<div id="cboxMiddleLeft" />'),e=w('<div id="cboxContent" />'),p=w('<div id="cboxMiddleRight" />'),w("<div/>").append(w('<div id="cboxBottomLeft"/>'),r=w('<div id="cboxBottomCenter"/>'),w('<div id="cboxBottomRight"/>')));K.find("[id]").css({"float":"left"});e.append(x=w('<div id="cboxLoadedContent" style="width:0; height:0;" />'),c=w('<div id="cboxLoadingOverlay" />'),n=w('<div id="cboxLoadingGraphic" />'),g=w('<div id="cboxTitle" />'),i=w('<div id="cboxCurrent" />'),F=w('<div id="cboxSlideshow" />'),h=w('<div id="cboxNext" />').click(w.fn.colorbox.next),A=w('<div id="cboxPrevious" />').click(w.fn.colorbox.prev),o=w('<div id="cboxClose" />').click(w.fn.colorbox.close));e.children().addClass("hover").mouseover(function(){w(this).addClass("hover")}).mouseout(function(){w(this).removeClass("hover")}).hide();L=k.height()+r.height()+e.outerHeight(true)-e.height();f=D.width()+p.width()+e.outerWidth(true)-e.width();d=x.outerHeight(true);a=x.outerWidth(true);J.css({"padding-bottom":L,"padding-right":f}).hide();w().bind("keydown.cbox_close",function(M){if(M.keyCode==27){M.preventDefault();o.click()}});e.children().removeClass("hover")};w.fn.colorbox.next=function(){v=v<b.length-1?v+1:0;w.fn.colorbox.load()};w.fn.colorbox.prev=function(){v=v>0?v-1:b.length-1;w.fn.colorbox.load()};w.fn.colorbox.position=function(P,O,N,Q){var R=document.documentElement.clientHeight;var T=R/2-O/2;var S=document.documentElement.clientWidth/2-P/2;if(O>R){T-=(O-R)}if(T<0){T=0}if(S<0){S=0}T+=H.scrollTop();S+=H.scrollLeft();P=P-f;O=O-L;K[0].style.width=K[0].style.height="9999px";function U(V){k[0].style.width=r[0].style.width=e[0].style.width=V.style.width;n[0].style.height=c[0].style.height=e[0].style.height=D[0].style.height=p[0].style.height=V.style.height}var M=(J.width()===P&&J.height()===O)?0:N;J.dequeue().animate({height:O,width:P,top:T,left:S},{duration:M,complete:function(){U(this);K[0].style.width=(P+f)+"px";K[0].style.height=(O+L)+"px";if(Q){Q()}if(w.browser.msie&&w.browser.version<7){u()}},step:function(){U(this)}})};w.fn.colorbox.dimensions=function(Q){if(!t){return}H.unbind("resize.cbox_resize");var O=I.transition=="none"?0:I.speed;x.remove();x=w(Q);var M;var W;function U(){if(I.width){M=s}else{M=s&&s<x.width()?s:x.width()}return M}function T(){if(I.height){W=G}else{W=G&&G<x.height()?G:x.height()}return W}x.hide().appendTo("body").attr({id:"cboxLoadedContent"}).css({width:U()}).css({height:T()}).prependTo(e);if(w.browser.msie&&w.browser.version<7){w("select").not(w("#colorbox select")).css({visibility:"hidden"})}if(w("#cboxPhoto").length>0&&I.height){var R=(W-parseInt(w("#cboxPhoto")[0].style.height,10))/2;w("#cboxPhoto").css({marginTop:(R>0?R:0)})}function V(Z){var Y=M+a+f;var aa=W+d+L;w.fn.colorbox.position(Y,aa,Z,function(){if(!t){return}if(w.browser.msie){if(w("#cboxPhoto").length>0){x.fadeIn(100)}J.css("filter","")}e.children().show();w("#cboxIframe").after("<iframe name='iframe_"+new Date().getTime()+"' frameborder=0 src='"+(I.href?I.href:j.href)+"' />").remove();c.hide();n.hide();F.hide();if(b.length>1){i.html(I.current.replace(/\{current\}/,v+1).replace(/\{total\}/,b.length));h.html(I.next);A.html(I.previous);w().unbind("keydown",E).one("keydown",E);if(I.slideshow){F.show()}}else{i.add(h).add(A).hide()}g.html(I.title?I.title:j.title);w.event.trigger("cbox_complete");if(B){B.call(j)}if(I.transition==="fade"){J.fadeTo(O,1,function(){if(w.browser.msie){J.css("filter","")}})}H.bind("resize.cbox_resize",function(){w.fn.colorbox.position(Y,aa,0)})})}if(I.transition=="fade"){J.fadeTo(O,0,function(){V(0)})}else{V(O)}if(I.preloading&&b.length>1){var P=v>0?b[v-1]:b[b.length-1];var S=v<b.length-1?b[v+1]:b[0];var X=w(S).data("colorbox").href?w(S).data("colorbox").href:S.href;var N=w(P).data("colorbox").href?w(P).data("colorbox").href:P.href;if(q(X)){w("<img />").attr("src",X)}if(q(N)){w("<img />").attr("src",N)}}};w.fn.colorbox.load=function(){j=b[v];I=w(j).data("colorbox");w.event.trigger("cbox_load");c.show();n.show();o.show();l();var M=I.height?y(I.height,"y")-d-L:false;var P=I.width?y(I.width,"x")-a-f:false;if(I.maxHeight){G=I.maxHeight?y(I.maxHeight,"y")-d-L:false;M=M&&M<G?M:G}if(I.maxWidth){s=I.maxWidth?y(I.maxWidth,"x")-a-f:false;P=P&&P<s?P:s}G=M;s=P;var N=I.href?I.href:j.href;if(I.inline){w('<div id="cboxInlineTemp" />').hide().insertBefore(w(N)[0]);w.fn.colorbox.dimensions(w(N).wrapAll("<div/>").parent())}else{if(I.iframe){w.fn.colorbox.dimensions(w("<div><div id='cboxIframe' /></div>"))}else{if(q(N)){var O=new Image();O.onload=function(){O.onload=null;if((G||s)&&I.resize){var S=this.width;var Q=this.height;var U=0;var T=this;var R=function(){Q+=Q*U;S+=S*U;T.height=Q;T.width=S};if(s&&S>s){U=(s-S)/S;R()}if(G&&Q>G){U=(G-Q)/Q;R()}}w.fn.colorbox.dimensions(w("<div />").css({width:this.width,height:this.height}).append(w(this).css({width:this.width,height:this.height,display:"block",margin:"auto",border:0}).attr("id","cboxPhoto")));if(b.length>1){w(this).css({cursor:"pointer"}).click(w.fn.colorbox.next)}if(w.browser.msie&&w.browser.version==7){this.style.msInterpolationMode="bicubic"}};O.src=N}else{w("<div />").load(N,function(Q,R){if(R=="success"){w.fn.colorbox.dimensions(w(this))}else{w.fn.colorbox.dimensions(w("<p>Request unsuccessful.</p>"))}})}}}};w.fn.colorbox.close=function(){t=false;clearTimeout(C);H.unbind("resize.cbox_resize");F.unbind("cbox_complete cbox_load click");l();z.css({cursor:"auto"}).fadeOut("fast").unbind("click",w.fn.colorbox.close);w().unbind("keydown",E);if(w.browser.msie&&w.browser.version<7){w("select").css({visibility:"inherit"});H.unbind("resize scroll",u)}e.children().hide();J.stop(true,false).removeClass().fadeOut("fast",function(){j.focus();x.remove();J.css({opacity:1});w.event.trigger("cbox_closed")})};w.fn.colorbox.settings={transition:"elastic",speed:350,width:false,height:false,initialWidth:"400",initialHeight:"400",maxWidth:false,maxHeight:false,resize:true,inline:false,iframe:false,photo:false,href:false,title:false,rel:false,opacity:0.9,preloading:true,current:"image {current} of {total}",previous:"previous",next:"next",close:"close",open:false,overlayClose:true,slideshow:false,slideshowAuto:true,slideshowSpeed:2500,slideshowStart:"start slideshow",slideshowStop:"stop slideshow"}})(jQuery);
/**
 * Tabs - jQuery plugin for accessible, unobtrusive tabs
 * @requires jQuery v1.1.1
 *
 * http://stilbuero.de/tabs/
 *
 * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 *
 * Version: 2.7.4
 */
(function($){$.extend({tabs:{remoteCount:0}});$.fn.tabs=function(initial,settings){if(typeof initial=='object')settings=initial;settings=$.extend({initial:(initial&&typeof initial=='number'&&initial>0)?--initial:0,disabled:null,bookmarkable:$.ajaxHistory?true:false,remote:false,spinner:'Loading&#8230;',hashPrefix:'remote-tab-',fxFade:null,fxSlide:null,fxShow:null,fxHide:null,fxSpeed:'normal',fxShowSpeed:null,fxHideSpeed:null,fxAutoHeight:false,onClick:null,onHide:null,onShow:null,navClass:'tabs-nav',selectedClass:'tabs-selected',disabledClass:'tabs-disabled',containerClass:'tabs-container',hideClass:'tabs-hide',loadingClass:'tabs-loading',tabStruct:'div'},settings||{});$.browser.msie6=$.browser.msie&&($.browser.version&&$.browser.version<7||/MSIE 6.0/.test(navigator.userAgent));function unFocus(){scrollTo(0,0);}return this.each(function(){var container=this;var nav=$('ul.'+settings.navClass,container);nav=nav.size()&&nav||$('>ul:eq(0)',container);var tabs=$('a',nav);if(settings.remote){tabs.each(function(){var id=settings.hashPrefix+(++$.tabs.remoteCount),hash='#'+id,url=this.href;this.href=hash;$('<div id="'+id+'" class="'+settings.containerClass+'"></div>').appendTo(container);$(this).bind('loadRemoteTab',function(e,callback){var $$=$(this).addClass(settings.loadingClass),span=$('span',this)[0],tabTitle=span.innerHTML;if(settings.spinner){span.innerHTML='<em>'+settings.spinner+'</em>';}setTimeout(function(){$(hash).load(url,function(){if(settings.spinner){span.innerHTML=tabTitle;}$$.removeClass(settings.loadingClass);callback&&callback();});},0);});});}var containers=$('div.'+settings.containerClass,container);containers=containers.size()&&containers||$('>'+settings.tabStruct,container);nav.is('.'+settings.navClass)||nav.addClass(settings.navClass);containers.each(function(){var $$=$(this);$$.is('.'+settings.containerClass)||$$.addClass(settings.containerClass);});var hasSelectedClass=$('li',nav).index($('li.'+settings.selectedClass,nav)[0]);if(hasSelectedClass>=0){settings.initial=hasSelectedClass;}if(location.hash){tabs.each(function(i){if(this.hash==location.hash){settings.initial=i;if(($.browser.msie||$.browser.opera)&&!settings.remote){var toShow=$(location.hash);var toShowId=toShow.attr('id');toShow.attr('id','');setTimeout(function(){toShow.attr('id',toShowId);},500);}unFocus();return false;}});}if($.browser.msie){unFocus();}containers.filter(':eq('+settings.initial+')').show().end().not(':eq('+settings.initial+')').addClass(settings.hideClass);$('li',nav).removeClass(settings.selectedClass).eq(settings.initial).addClass(settings.selectedClass);tabs.eq(settings.initial).trigger('loadRemoteTab').end();if(settings.fxAutoHeight){var _setAutoHeight=function(reset){var heights=$.map(containers.get(),function(el){var h,jq=$(el);if(reset){if($.browser.msie6){el.style.removeExpression('behaviour');el.style.height='';el.minHeight=null;}h=jq.css({'min-height':''}).height();}else{h=jq.height();}return h;}).sort(function(a,b){return b-a;});if($.browser.msie6){containers.each(function(){this.minHeight=heights[0]+'px';this.style.setExpression('behaviour','this.style.height = this.minHeight ? this.minHeight : "1px"');});}else{containers.css({'min-height':heights[0]+'px'});}};_setAutoHeight();var cachedWidth=container.offsetWidth;var cachedHeight=container.offsetHeight;var watchFontSize=$('#tabs-watch-font-size').get(0)||$('<span id="tabs-watch-font-size">M</span>').css({display:'block',position:'absolute',visibility:'hidden'}).appendTo(document.body).get(0);var cachedFontSize=watchFontSize.offsetHeight;setInterval(function(){var currentWidth=container.offsetWidth;var currentHeight=container.offsetHeight;var currentFontSize=watchFontSize.offsetHeight;if(currentHeight>cachedHeight||currentWidth!=cachedWidth||currentFontSize!=cachedFontSize){_setAutoHeight((currentWidth>cachedWidth||currentFontSize<cachedFontSize));cachedWidth=currentWidth;cachedHeight=currentHeight;cachedFontSize=currentFontSize;}},50);}var showAnim={},hideAnim={},showSpeed=settings.fxShowSpeed||settings.fxSpeed,hideSpeed=settings.fxHideSpeed||settings.fxSpeed;if(settings.fxSlide||settings.fxFade){if(settings.fxSlide){showAnim['height']='show';hideAnim['height']='hide';}if(settings.fxFade){showAnim['opacity']='show';hideAnim['opacity']='hide';}}else{if(settings.fxShow){showAnim=settings.fxShow;}else{showAnim['min-width']=0;showSpeed=1;}if(settings.fxHide){hideAnim=settings.fxHide;}else{hideAnim['min-width']=0;hideSpeed=1;}}var onClick=settings.onClick,onHide=settings.onHide,onShow=settings.onShow;tabs.bind('triggerTab',function(){var li=$(this).parents('li:eq(0)');if(container.locked||li.is('.'+settings.selectedClass)||li.is('.'+settings.disabledClass)){return false;}var hash=this.hash;if($.browser.msie){$(this).trigger('click');if(settings.bookmarkable){$.ajaxHistory.update(hash);location.hash=hash.replace('#','');}}else if($.browser.safari){var tempForm=$('<form action="'+hash+'"><div><input type="submit" value="h" /></div></form>').get(0);tempForm.submit();$(this).trigger('click');if(settings.bookmarkable){$.ajaxHistory.update(hash);}}else{if(settings.bookmarkable){location.hash=hash.replace('#','');}else{$(this).trigger('click');}}});tabs.bind('disableTab',function(){var li=$(this).parents('li:eq(0)');if($.browser.safari){li.animate({opacity:0},1,function(){li.css({opacity:''});});}li.addClass(settings.disabledClass);});if(settings.disabled&&settings.disabled.length){for(var i=0,k=settings.disabled.length;i<k;i++){tabs.eq(--settings.disabled[i]).trigger('disableTab').end();}};tabs.bind('enableTab',function(){var li=$(this).parents('li:eq(0)');li.removeClass(settings.disabledClass);if($.browser.safari){li.animate({opacity:1},1,function(){li.css({opacity:''});});}});tabs.bind('click',function(e){var trueClick=e.clientX;var clicked=this,li=$(this).parents('li:eq(0)'),toShow=$(this.hash),toHide=containers.filter(':visible');if(container['locked']||li.is('.'+settings.selectedClass)||li.is('.'+settings.disabledClass)||typeof onClick=='function'&&onClick(this,toShow[0],toHide[0])===false){this.blur();return false;}container['locked']=true;if(toShow.size()){if($.browser.msie&&settings.bookmarkable){var toShowId=this.hash.replace('#','');toShow.attr('id','');setTimeout(function(){toShow.attr('id',toShowId);},0);}var resetCSS={display:'',overflow:'',height:''};if(!$.browser.msie){resetCSS['opacity']='';}function switchTab(){if(settings.bookmarkable&&trueClick){$.ajaxHistory.update(clicked.hash);}toHide.animate(hideAnim,hideSpeed,function(){$(clicked).parents('li:eq(0)').addClass(settings.selectedClass).siblings().removeClass(settings.selectedClass);toHide.addClass(settings.hideClass).css(resetCSS);if(typeof onHide=='function'){onHide(clicked,toShow[0],toHide[0]);}if(!(settings.fxSlide||settings.fxFade||settings.fxShow)){toShow.css('display','block');}toShow.animate(showAnim,showSpeed,function(){toShow.removeClass(settings.hideClass).css(resetCSS);if($.browser.msie){toHide[0].style.filter='';toShow[0].style.filter='';}if(typeof onShow=='function'){onShow(clicked,toShow[0],toHide[0]);}container['locked']=null;});});}if(!settings.remote){switchTab();}else{$(clicked).trigger('loadRemoteTab',[switchTab]);}}else{alert('There is no such container.');}var scrollX=window.pageXOffset||document.documentElement&&document.documentElement.scrollLeft||document.body.scrollLeft||0;var scrollY=window.pageYOffset||document.documentElement&&document.documentElement.scrollTop||document.body.scrollTop||0;setTimeout(function(){window.scrollTo(scrollX,scrollY);},0);this.blur();return settings.bookmarkable&&!!trueClick;});if(settings.bookmarkable){$.ajaxHistory.initialize(function(){tabs.eq(settings.initial).trigger('click').end();});}});};var tabEvents=['triggerTab','disableTab','enableTab'];for(var i=0;i<tabEvents.length;i++){$.fn[tabEvents[i]]=(function(tabEvent){return function(tab){return this.each(function(){var nav=$('ul.tabs-nav',this);nav=nav.size()&&nav||$('>ul:eq(0)',this);var a;if(!tab||typeof tab=='number'){a=$('li a',nav).eq((tab&&tab>0&&tab-1||0));}else if(typeof tab=='string'){a=$('li a[@href$="#'+tab+'"]',nav);}a.trigger(tabEvent);});};})(tabEvents[i]);}$.fn.activeTab=function(){var selectedTabs=[];this.each(function(){var nav=$('ul.tabs-nav',this);nav=nav.size()&&nav||$('>ul:eq(0)',this);var lis=$('li',nav);selectedTabs.push(lis.index(lis.filter('.tabs-selected')[0])+1);});return selectedTabs[0];};})(jQuery);
/**
 * Cookie plugin
 *
 * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 *
 */
jQuery.cookie=function(name,value,options){if(typeof value!='undefined'){options=options||{};if(value===null){value='';options=$.extend({},options);options.expires=-1;}var expires='';if(options.expires&&(typeof options.expires=='number'||options.expires.toUTCString)){var date;if(typeof options.expires=='number'){date=new Date();date.setTime(date.getTime()+(options.expires*24*60*60*1000));}else{date=options.expires;}expires='; expires='+date.toUTCString();}var path=options.path?'; path='+(options.path):'';var domain=options.domain?'; domain='+(options.domain):'';var secure=options.secure?'; secure':'';document.cookie=[name,'=',encodeURIComponent(value),expires,path,domain,secure].join('');}else{var cookieValue=null;if(document.cookie&&document.cookie!=''){var cookies=document.cookie.split(';');for(var i=0;i<cookies.length;i++){var cookie=jQuery.trim(cookies[i]);if(cookie.substring(0,name.length+1)==(name+'=')){cookieValue=decodeURIComponent(cookie.substring(name.length+1));break;}}}return cookieValue;}};
/*
 * jQuery validation plug-in 1.5.5
 *
 * 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,{validate:function(options){if(!this.length){options&&options.debug&&window.console&&console.warn("nothing selected, can't validate, returning nothing");return;}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){this.find("input, button").filter(".cancel").click(function(){validator.cancelSubmit=true;});if(validator.settings.submitHandler){this.find("input, button").filter(":submit").click(function(){validator.submitButton=this;});}this.submit(function(event){if(validator.settings.debug)event.preventDefault();function handle(){if(validator.settings.submitHandler){if(validator.submitButton){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){hidden.remove();}return false;}return true;}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;},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;}},removeAttrs:function(attributes){var result={},$element=this;$.each(attributes.split(/\s/),function(index,value){result[value]=$element.attr(value);$element.removeAttr(value);});return result;},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);if(data.required){var param=data.required;delete data.required;data=$.extend({required:param},data);}return data;}});$.extend($.expr[":"],{blank:function(a){return!$.trim(a.value);},filled:function(a){return!!$.trim(a.value);},unchecked:function(a){return!a.checked;}});$.validator=function(options,form){this.settings=$.extend({},$.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;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){if(element.name in this.submitted)this.element(element);},highlight:function(element,errorClass,validClass){$(element).addClass(errorClass).removeClass(validClass);},unhighlight:function(element,errorClass,validClass){$(element).removeClass(errorClass).addClass(validClass);}},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).",dateDE:"Bitte geben Sie ein gÃ¼ltiges Datum ein.",number:"Please enter a valid number.",numberDE:"Bitte geben Sie eine Nummer ein.",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");validator.settings["on"+event.type]&&validator.settings["on"+event.type].call(validator,this[0]);}$(this.currentForm).delegate("focusin focusout keyup",":text, :password, :file, select, textarea",delegate).delegate("click",":radio, :checkbox",delegate);if(this.settings.invalidHandler)$(this.currentForm).bind("invalid-form.validate",this.settings.invalidHandler);},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();},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()){this.toHide=this.toHide.add(this.containers);}this.showErrors();return result;},showErrors:function(errors){if(errors){$.extend(this.errorMap,errors);this.errorList=[];for(var name in errors){this.errorList.push({message:errors[name],element:this.findByName(name)[0]});}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();},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();}catch(e){}}},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={};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);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.formSubmitted=false;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(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(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");throw e;}}if(dependencyMismatch)return;if(this.objectLength(rules))this.successList.push(element);return true;},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];},customMessage:function(name,method){var m=this.settings.messages[name];return m&&(m.constructor==String?m:m[method]);},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),!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);if(typeof message=="function")message=message.call(this,rule.parameters,element);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){label.removeClass().addClass(this.settings.errorClass);label.attr("generated")&&label.html(message);}else{label=$("<"+this.settings.errorElement+"/>").attr({"for":this.idOrName(element),generated:true}).addClass(this.settings.errorClass).html(message||"");if(this.settings.wrapper){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){return this.errors().filter("[for='"+this.idOrName(element)+"']");},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){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--;if(this.pendingRequest<0)this.pendingRequest=0;delete this.pending[element.name];if(valid&&this.pendingRequest==0&&this.formSubmitted&&this.form()){$(this.currentForm).submit();}else if(!valid&&this.pendingRequest==0&&this.formSubmitted){$(this.currentForm).triggerHandler("invalid-form",[this]);}},previousValue:function(element){return $.data(element,"previousValue")||$.data(element,"previousValue",previous={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;}}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){$.each(rules,function(prop,val){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];}}});$.each(rules,function(rule,parameter){rules[rule]=$.isFunction(parameter)?parameter(element):parameter;});$.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){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;}}if(rules.messages){delete rules.messages}return rules;},normalizeRule:function(data){if(typeof data=="string"){var transformed={};$.each(data.split(/\s/),function(){transformed[this]=true;});data=transformed;}return data;},addMethod:function(name,method,message){$.validator.methods[name]=method;$.validator.messages[name]=message||$.validator.messages[name];if(method.length<3){$.validator.addClassRules(name,$.validator.normalizeRule(name));}},methods:{required:function(value,element,param){if(!this.depend(param,element))return"dependency-mismatch";switch(element.nodeName.toLowerCase()){case'select':var options=$("option:selected",element);return options.length>0&&(element.type=="select-multiple"||($.browser.msie&&!(options[0].attributes['value'].specified)?options[0].text:options[0].value).length>0);case'input':if(this.checkable(element))return this.getLength(value,element)>0;default:return $.trim(value).length>0;}},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]={};this.settings.messages[element.name].remote=typeof previous.message=="function"?previous.message(value):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){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={};errors[element.name]=previous.message=response||validator.defaultMessage(element,"remote");validator.showErrors(errors);}previous.valid=valid;validator.stopRequest(element,valid);}},param));return"pending";}else if(this.pending[element.name]){return"pending";}return previous.valid;},minlength:function(value,element,param){return this.optional(element)||this.getLength($.trim(value),element)>=param;},maxlength:function(value,element,param){return this.optional(element)||this.getLength($.trim(value),element)<=param;},rangelength:function(value,element,param){var length=this.getLength($.trim(value),element);return this.optional(element)||(length>=param[0]&&length<=param[1]);},min:function(value,element,param){return this.optional(element)||value>=param;},max:function(value,element,param){return this.optional(element)||value<=param;},range:function(value,element,param){return this.optional(element)||(value>=param[0]&&value<=param[1]);},email:function(value,element){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);},url:function(value,element){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);},date:function(value,element){return this.optional(element)||!/Invalid|NaN/.test(new Date(value));},dateISO:function(value,element){return this.optional(element)||/^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(value);},dateDE:function(value,element){return this.optional(element)||/^\d\d?\.\d\d?\.\d\d\d?\d?$/.test(value);},number:function(value,element){return this.optional(element)||/^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(value);},numberDE:function(value,element){return this.optional(element)||/^-?(?:\d+|\d{1,3}(?:\.\d{3})+)(?:,\d+)?$/.test(value);},digits:function(value,element){return this.optional(element)||/^\d+$/.test(value);},creditcard:function(value,element){if(this.optional(element))return"dependency-mismatch";if(/[^0-9-]+/.test(value))return false;var nCheck=0,nDigit=0,bEven=false;value=value.replace(/\D/g,"");for(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;},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"));},equalTo:function(value,element,param){return value==$(param).val();}}});$.format=$.validator.format;})(jQuery);;(function($){var ajax=$.ajax;var pendingRequests={};$.ajax=function(settings){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);;(function($){$.each({focus:'focusin',blur:'focusout'},function(original,fix){$.event.special[fix]={setup:function(){if($.browser.msie)return false;this.addEventListener(original,$.event.special[fix].handler,true);},teardown:function(){if($.browser.msie)return false;this.removeEventListener(original,$.event.special[fix].handler,true);},handler:function(e){arguments[0]=$.event.fix(e);arguments[0].type=fix;return $.event.handle.apply(this,arguments);}};});$.extend($.fn,{delegate:function(type,delegate,handler){return this.bind(type,function(event){var target=$(event.target);if(target.is(delegate)){return handler.apply(target,arguments);}});},triggerEvent:function(type,target){return this.triggerHandler(type,[$.event.fix({type:type,target:target})]);}})})(jQuery);
/* Copyright (c) 2010 Brandon Aaron (http://brandonaaron.net)
 * Licensed under the MIT License (LICENSE.txt).
 *
 * Version 2.1.2
 */
(function(a){a.fn.bgiframe=(a.browser.msie&&/msie 6\.0/i.test(navigator.userAgent)?function(d){d=a.extend({top:"auto",left:"auto",width:"auto",height:"auto",opacity:true,src:"javascript:false;"},d);var c='<iframe class="bgiframe"frameborder="0"tabindex="-1"src="'+d.src+'"style="display:block;position:absolute;z-index:-1;'+(d.opacity!==false?"filter:Alpha(Opacity='0');":"")+"top:"+(d.top=="auto"?"expression(((parseInt(this.parentNode.currentStyle.borderTopWidth)||0)*-1)+'px')":b(d.top))+";left:"+(d.left=="auto"?"expression(((parseInt(this.parentNode.currentStyle.borderLeftWidth)||0)*-1)+'px')":b(d.left))+";width:"+(d.width=="auto"?"expression(this.parentNode.offsetWidth+'px')":b(d.width))+";height:"+(d.height=="auto"?"expression(this.parentNode.offsetHeight+'px')":b(d.height))+';"/>';return this.each(function(){if(a(this).children("iframe.bgiframe").length===0){this.insertBefore(document.createElement(c),this.firstChild)}})}:function(){return this});a.fn.bgIframe=a.fn.bgiframe;function b(c){return c&&c.constructor===Number?c+"px":c}})(jQuery);

/* SiteCatalyst code version: H.20.3.
 * Copyright 1997-2009 Omniture, Inc. More info available at
 * http://www.omniture.com
 */
var rel_ver="2.0:H20.3";

// TO BE SET FIRST "REPORSUITE-ID EINTRAGEN!" !!!
var s_account="deutschepostdhlprod2,deutschepostagglobalprod";
var wpmsc=s_gi(s_account);

/************************** CONFIG SECTION **************************/
wpmsc.charSet="UTF-8";
/* Conversion Config */
wpmsc.currencyCode="EUR";
/* Link Tracking Config */
wpmsc.trackDownloadLinks=true;
wpmsc.trackExternalLinks=true;
wpmsc.trackInlineStats=true;
wpmsc.linkDownloadFileTypes="exe,zip,wav,mp3,mov,mpg,avi,wmv,pdf,doc,docx,xls,xlsx,ppt,pptx";
wpmsc.linkInternalFilters="javascript:,dhl.de,.dhl.de,packstation.de,.packstation.de ,"+document.domain; // KONFIGURIERBAR?
wpmsc.linkLeaveQueryString=false;
wpmsc.linkTrackVars="prop6";
wpmsc.linkTrackEvents="None";

wpmsc.hier2 = "MAIL|DHL|PAKET";


/* Plugin Config */
wpmsc.usePlugins=true;
wpmsc.isPageView = true; // wird bei flash tracking abgeschaltet

function wpmsc_doPlugins(wpmsc) {

   wpmsc.eVar27 = cm_getFlashVersion(); // set Flash Version.  
   if(!wpmsc.campaign){ //set campaign tracking code
      wpmsc.campaign=wpmsc.getQueryParam('cid');
      wpmsc.campaign=wpmsc.getValOnce(wpmsc.campaign,'wpmsc_campaign',0);
   }
   if(!wpmsc.eVar2){ //set internal campaign tracking code
      wpmsc.eVar2=wpmsc.getQueryParam('did');
      wpmsc.eVar2=wpmsc.getValOnce(wpmsc.eVar2,'wpmsc_eVar2',0);
   }
   	wpmsc.eVar5 = normalize(wpmsc.eVar5);
	wpmsc.eVar6 = normalize(wpmsc.eVar6);
	wpmsc.prop9 = normalize(wpmsc.prop9);
	wpmsc.prop10 = normalize(wpmsc.prop10);
 	cm_equalize('wpmsc.prop9', 'wpmsc.eVar5');
 	cm_equalize('wpmsc.prop10','wpmsc.eVar6');
	if(!wpmsc.prop13){
    	wpmsc.prop9 =(cm_varIsSet(wpmsc.prop9))?wpmsc.prop9:''; // Deklaration sicherstellen
      	wpmsc.prop10=(cm_varIsSet(wpmsc.prop10))?wpmsc.prop10:''; // Deklaration sicherstellen
     	wpmsc.prop13=wpmsc.prop9+wpmsc.prop10;
	}
	if ( wpmsc.isPageView ){
		//nicht bei flash tracking, wird im plugin dort ausgeschaltet
		cm_addEvent('event1');
	}
 	if(wpmsc.campaign){
      wpmsc.eVar1 = (wpmsc.campaign.substring(0,2).toLowerCase()=="i_")?wpmsc.campaign:'';
   	}
	if ( cm_varIsSet(wpmsc.prop5) ) {
   		var loc = wpmsc.prop5.split("_");
   		if ( loc.length == 2 )	{
   			wpmsc.prop5 = loc[0].toLowerCase() + "_" + loc[1].toUpperCase();
   		} else {
   			wpmsc.prop5 = "Fehlerhafte LANG ID: " + wpmsc.prop5;
   		}
	}
	if ( cm_varIsSet(wpmsc.channel) ){
		wpmsc.channel = wpmsc.channel.replace(/\|/,":");
	}
 	cm_equalize('wpmsc.prop1', 'wpmsc.eVar4');
 	cm_equalize('wpmsc.prop5', 'wpmsc.eVar8');
 	cm_equalize('wpmsc.hier2', 'wpmsc.eVar9');
 	cm_equalize('wpmsc.prop11','wpmsc.eVar21');
 	cm_equalize('wpmsc.prop12','wpmsc.eVar22');

	wpmsc.eVar10='+1';
	if(rel_ver) wpmsc.prop8=rel_ver;
	wpmsc.prop6=wpmsc.pageName;
}
wpmsc.doPlugins=wpmsc_doPlugins;


/************************** CONTENTMETRICS PLUGINS *************************/

function cm_getFlashVersion(){ // read out current flas version
	var  flashVersion = "(kein Flash Plugin)";
	var version = '0,0,0,0';
	try {
		// ie 
		try { 
			var axo = new ActiveXObject('ShockwaveFlash.ShockwaveFlash.6'); 
			try {
				axo.AllowScriptAccess = 'always';
			} catch(e) {
				version = '6,0,0,0';
			} 
		} catch(e) {} 
		version = (new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version')).replace(/\D+/g, ',').match(/^,?(.+),?$/)[1]; 	
	} catch(e) {
		// other browsers 
		try { 
			if( navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin) { 
				version = (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]).description.replace(/\D+/g, ",").match(/^,?(.+),?$/)[1]; 
			} 
		} catch(e) {} 
	} 
	var x = version.split(',');
	x[2] = null;
	x[4] =  null;
	if ( x[0] != 0 ) {
		flashVersion = "Flash PugIn Vers " + x.join(".");
	}
	//alert(flashVersion);
	return flashVersion; 
}

function cm_equalize(var1,var2){//wenn eine von beiden gesetzt ist wird die andere genauso
	if(!cm_varIsSet(eval(var1))&&cm_varIsSet(eval(var2)))var ex=var1+'='+var2;
	if(cm_varIsSet(eval(var1))&&!cm_varIsSet(eval(var2)))var ex=var2+'='+var1;
	eval(ex);
}
function cm_addEvent(ev){ //setzt einen event einmalig pro seite
	if(!cm_varIsSet(wpmsc.events)){ //1.fall nicht definiert oder leer
		wpmsc.events=ev;
		return;
	} 
	if(cm_eventIsSet(ev)) return; //2.fall nicht leer aber schon drin
	wpmsc.events+=','+ev; //3.fall nicht leer aber nicht drin
}
function cm_eventIsSet(ev){ //event ist gesetzt
	if(!cm_varIsSet(wpmsc.events))return false;
	var events=''+wpmsc.events;
	if(events.indexOf(ev)>-1)return true;
	return false;
}
function cm_varIsSet(vn){ //variable ist gesetzt und nicht leer
	if(typeof(vn)!="undefined"&&vn!="")return true;
	return false;
}

/*
 * Normalisiert strings, z.B. fuer Suchworttracking
 * @param {string}s_in Suchwort wie eingetippt
 * @returns {string} Normalisiertes Suchwort
 */
function normalize(s_in){
	
	if ( cm_varIsSet(s_in)) {
	    var s=s_in.toLowerCase();	//kleinschreibung
	    while(s.indexOf(' ')==0)s=s.substr(1,s.length-1);	//fuehrende leerzeichen raus
	    while(s.substr(s.length-1,1)==' ')s=s.substr(0,s.length-1);	//schliessende leerzeichen raus
	   	while(s.match(/[ ]{2}/))s=s.replace('  ',' ');	//doppelte leerzeichen raus
	    s=s.replace(/\u00e4/ig,'ae');	//ersetze umlaute
	    s=s.replace(/\u00f6/ig,'oe');	//ersetze umlaute
	    s=s.replace(/\u00fc/ig,'ue');	//ersetze umlaute
	    s=s.replace(/\u00df/ig,'ss');	//ersetze esszet
	    return s;
	}
	return s_in;
}

/************************* OMNITURE PLUGINS *************************/
/*
 * Plugin: getQueryParam 2.3
 */
wpmsc.getQueryParam=new Function("p","d","u",""
+"var s=this,v='',i,t;d=d?d:'';u=u?u:(s.pageURL?s.pageURL:s.wd.locati"
+"on);if(u=='f')u=s.gtfs().location;while(p){i=p.indexOf(',');i=i<0?p"
+".length:i;t=s.p_gpv(p.substring(0,i),u+'');if(t){t=t.indexOf('#')>-"
+"1?t.substring(0,t.indexOf('#')):t;}if(t)v+=v?d+t:t;p=p.substring(i="
+"=p.length?i:i+1)}return v");
wpmsc.p_gpv=new Function("k","u",""
+"var s=this,v='',i=u.indexOf('?'),q;if(k&&i>-1){q=u.substring(i+1);v"
+"=s.pt(q,'&','p_gvf',k)}return v");
wpmsc.p_gvf=new Function("t","k",""
+"if(t){var s=this,i=t.indexOf('='),p=i<0?t:t.substring(0,i),v=i<0?'T"
+"rue':t.substring(i+1);if(p.toLowerCase()==k.toLowerCase())return s."
+"epa(v)}return ''");

/*
 * Plugin: getValOnce 0.3 - get a value once per session or number of days
 */
wpmsc.getValOnce=new Function("v","c","e",""
+"var s=this,v=v?v:'',k=s.c_r(c),a=new Date,e=e?e:0;if(v){a.setTime(a"
+".getTime()+e*86400000);s.c_w(c,v,e?a:0);}return v==k?'':v");

/* WARNING: Changing any of the below variables will cause drastic
changes to how your visitor data is collected.  Changes should only be
made when instructed to do so by your account manager.*/
wpmsc.visitorNamespace="deutschepostag"
wpmsc.dc="112"

/************* DO NOT ALTER ANYTHING BELOW THIS LINE ! **************/
var s_code='',s_objectID;function s_gi(un,pg,ss){var c="s._c='s_c';s.wd=window;if(!s.wd.s_c_in){s.wd.s_c_il=new Array;s.wd.s_c_in=0;}s._il=s.wd.s_c_il;s._in=s.wd.s_c_in;s._il[s._in]=s;s.wd.s_c_in++;s"
+".an=s_an;s.cls=function(x,c){var i,y='';if(!c)c=this.an;for(i=0;i<x.length;i++){n=x.substring(i,i+1);if(c.indexOf(n)>=0)y+=n}return y};s.fl=function(x,l){return x?(''+x).substring(0,l):x};s.co=func"
+"tion(o){if(!o)return o;var n=new Object,x;for(x in o)if(x.indexOf('select')<0&&x.indexOf('filter')<0)n[x]=o[x];return n};s.num=function(x){x=''+x;for(var p=0;p<x.length;p++)if(('0123456789').indexO"
+"f(x.substring(p,p+1))<0)return 0;return 1};s.rep=s_rep;s.sp=s_sp;s.jn=s_jn;s.ape=function(x){var s=this,h='0123456789ABCDEF',i,c=s.charSet,n,l,e,y='';c=c?c.toUpperCase():'';if(x){x=''+x;if(c=='AUTO"
+"'&&('').charCodeAt){for(i=0;i<x.length;i++){c=x.substring(i,i+1);n=x.charCodeAt(i);if(n>127){l=0;e='';while(n||l<4){e=h.substring(n%16,n%16+1)+e;n=(n-n%16)/16;l++}y+='%u'+e}else if(c=='+')y+='%2B';"
+"else y+=escape(c)}x=y}else{x=x?s.rep(escape(''+x),'+','%2B'):x;if(x&&c&&s.em==1&&x.indexOf('%u')<0&&x.indexOf('%U')<0){i=x.indexOf('%');while(i>=0){i++;if(h.substring(8).indexOf(x.substring(i,i+1)."
+"toUpperCase())>=0)return x.substring(0,i)+'u00'+x.substring(i);i=x.indexOf('%',i)}}}}return x};s.epa=function(x){var s=this;return x?unescape(s.rep(''+x,'+',' ')):x};s.pt=function(x,d,f,a){var s=th"
+"is,t=x,z=0,y,r;while(t){y=t.indexOf(d);y=y<0?t.length:y;t=t.substring(0,y);r=s[f](t,a);if(r)return r;z+=y+d.length;t=x.substring(z,x.length);t=z<x.length?t:''}return ''};s.isf=function(t,a){var c=a"
+".indexOf(':');if(c>=0)a=a.substring(0,c);if(t.substring(0,2)=='s_')t=t.substring(2);return (t!=''&&t==a)};s.fsf=function(t,a){var s=this;if(s.pt(a,',','isf',t))s.fsg+=(s.fsg!=''?',':'')+t;return 0}"
+";s.fs=function(x,f){var s=this;s.fsg='';s.pt(x,',','fsf',f);return s.fsg};s.si=function(wd){var s=this,c=''+s_gi,a=c.indexOf(\"{\"),b=c.lastIndexOf(\"}\"),m;c=s_fe(a>0&&b>0?c.substring(a+1,b):0);if"
+"(wd&&wd.document&&c){wd.setTimeout('function s_sv(o,n,k){var v=o[k],i;if(v){if(typeof(v)==\"string\"||typeof(v)==\"number\")n[k]=v;else if (typeof(v)==\"array\"){n[k]=new Array;for(i=0;i<v.length;i"
+"++)s_sv(v,n[k],i)}else if (typeof(v)==\"object\"){n[k]=new Object;for(i in v)s_sv(v,n[k],i)}}}function s_si(t){var wd=window,s,i,j,c,a,b;wd.s_gi=new Function(\"un\",\"pg\",\"ss\",\"'+c+'\");wd.s=s_"
+"gi(\"'+s.oun+'\");s=wd.s;s.sa(\"'+s.un+'\");s.tfs=wd;s.pt(s.vl_g,\",\",\"vo1\",t);s.lnk=s.eo=s.linkName=s.linkType=s.wd.s_objectID=s.ppu=s.pe=s.pev1=s.pev2=s.pev3=\\'\\';if(t.m_l&&t.m_nl)for(i=0;i<"
+"t.m_nl.length;i++){n=t.m_nl[i];if(n){m=t[n];c=t[\"m_\"+n];if(m&&c){c=\"\"+c;if(c.indexOf(\"function\")>=0){a=c.indexOf(\"{\");b=c.lastIndexOf(\"}\");c=a>0&&b>0?c.substring(a+1,b):0;s[\"m_\"+n+\"_c"
+"\"]=c;if(m._e)s.loadModule(n);if(s[n])for(j=0;j<m._l.length;j++)s_sv(m,s[n],m._l[j])}}}}}var e,o,t;try{o=window.opener;if(o&&o.s_gi){t=o.s_gi(\"'+s.un+'\");if(t)s_si(t)}}catch(e){}',1)}};s.c_d='';s"
+".c_gdf=function(t,a){var s=this;if(!s.num(t))return 1;return 0};s.c_gd=function(){var s=this,d=s.wd.location.hostname,n=s.fpCookieDomainPeriods,p;if(!n)n=s.cookieDomainPeriods;if(d&&!s.c_d){n=n?par"
+"seInt(n):2;n=n>2?n:2;p=d.lastIndexOf('.');if(p>=0){while(p>=0&&n>1){p=d.lastIndexOf('.',p-1);n--}s.c_d=p>0&&s.pt(d,'.','c_gdf',0)?d.substring(p):d}}return s.c_d};s.c_r=function(k){var s=this;k=s.ap"
+"e(k);var c=' '+s.d.cookie,i=c.indexOf(' '+k+'='),e=i<0?i:c.indexOf(';',i),v=i<0?'':s.epa(c.substring(i+2+k.length,e<0?c.length:e));return v!='[[B]]'?v:''};s.c_w=function(k,v,e){var s=this,d=s.c_gd("
+"),l=s.cookieLifetime,t;v=''+v;l=l?(''+l).toUpperCase():'';if(e&&l!='SESSION'&&l!='NONE'){t=(v!=''?parseInt(l?l:0):-60);if(t){e=new Date;e.setTime(e.getTime()+(t*1000))}}if(k&&l!='NONE'){s.d.cookie="
+"k+'='+s.ape(v!=''?v:'[[B]]')+'; path=/;'+(e&&l!='SESSION'?' expires='+e.toGMTString()+';':'')+(d?' domain='+d+';':'');return s.c_r(k)==v}return 0};s.eh=function(o,e,r,f){var s=this,b='s_'+e+'_'+s._"
+"in,n=-1,l,i,x;if(!s.ehl)s.ehl=new Array;l=s.ehl;for(i=0;i<l.length&&n<0;i++){if(l[i].o==o&&l[i].e==e)n=i}if(n<0){n=i;l[n]=new Object}x=l[n];x.o=o;x.e=e;f=r?x.b:f;if(r||f){x.b=r?0:o[e];x.o[e]=f}if(x"
+".b){x.o[b]=x.b;return b}return 0};s.cet=function(f,a,t,o,b){var s=this,r,tcf;if(s.apv>=5&&(!s.isopera||s.apv>=7)){tcf=new Function('s','f','a','t','var e,r;try{r=s[f](a)}catch(e){r=s[t](e)}return r"
+"');r=tcf(s,f,a,t)}else{if(s.ismac&&s.u.indexOf('MSIE 4')>=0)r=s[b](a);else{s.eh(s.wd,'onerror',0,o);r=s[f](a);s.eh(s.wd,'onerror',1)}}return r};s.gtfset=function(e){var s=this;return s.tfs};s.gtfso"
+"e=new Function('e','var s=s_c_il['+s._in+'],c;s.eh(window,\"onerror\",1);s.etfs=1;c=s.t();if(c)s.d.write(c);s.etfs=0;return true');s.gtfsfb=function(a){return window};s.gtfsf=function(w){var s=this"
+",p=w.parent,l=w.location;s.tfs=w;if(p&&p.location!=l&&p.location.host==l.host){s.tfs=p;return s.gtfsf(s.tfs)}return s.tfs};s.gtfs=function(){var s=this;if(!s.tfs){s.tfs=s.wd;if(!s.etfs)s.tfs=s.cet("
+"'gtfsf',s.tfs,'gtfset',s.gtfsoe,'gtfsfb')}return s.tfs};s.mrq=function(u){var s=this,l=s.rl[u],n,r;s.rl[u]=0;if(l)for(n=0;n<l.length;n++){r=l[n];s.mr(0,0,r.r,0,r.t,r.u)}};s.br=function(id,rs){var s"
+"=this;if(s.disableBufferedRequests||!s.c_w('s_br',rs))s.brl=rs};s.flushBufferedRequests=function(){this.fbr(0)};s.fbr=function(id){var s=this,br=s.c_r('s_br');if(!br)br=s.brl;if(br){if(!s.disableBu"
+"fferedRequests)s.c_w('s_br','');s.mr(0,0,br)}s.brl=0};s.mr=function(sess,q,rs,id,ta,u){var s=this,dc=s.dc,t1=s.trackingServer,t2=s.trackingServerSecure,tb=s.trackingServerBase,p='.sc',ns=s.visitorN"
+"amespace,un=s.cls(u?u:(ns?ns:s.fun)),r=new Object,l,imn='s_i_'+(un),im,b,e;if(!rs){if(t1){if(t2&&s.ssl)t1=t2}else{if(!tb)tb='2o7.net';if(dc)dc=(''+dc).toLowerCase();else dc='d1';if(tb=='2o7.net'){i"
+"f(dc=='d1')dc='112';else if(dc=='d2')dc='122';p=''}t1=un+'.'+dc+'.'+p+tb}rs='http'+(s.ssl?'s':'')+'://'+t1+'/b/ss/'+s.un+'/'+(s.mobile?'5.1':'1')+'/H.20.3/'+sess+'?AQB=1&ndh=1'+(q?q:'')+'&AQE=1';if"
+"(s.isie&&!s.ismac){if(s.apv>5.5)rs=s.fl(rs,4095);else rs=s.fl(rs,2047)}if(id){s.br(id,rs);return}}if(s.d.images&&s.apv>=3&&(!s.isopera||s.apv>=7)&&(s.ns6<0||s.apv>=6.1)){if(!s.rc)s.rc=new Object;if"
+"(!s.rc[un]){s.rc[un]=1;if(!s.rl)s.rl=new Object;s.rl[un]=new Array;setTimeout('if(window.s_c_il)window.s_c_il['+s._in+'].mrq(\"'+un+'\")',750)}else{l=s.rl[un];if(l){r.t=ta;r.u=un;r.r=rs;l[l.length]"
+"=r;return ''}imn+='_'+s.rc[un];s.rc[un]++}im=s.wd[imn];if(!im)im=s.wd[imn]=new Image;im.s_l=0;im.onload=new Function('e','this.s_l=1;var wd=window,s;if(wd.s_c_il){s=wd.s_c_il['+s._in+'];s.mrq(\"'+u"
+"n+'\");s.nrs--;if(!s.nrs)s.m_m(\"rr\")}');if(!s.nrs){s.nrs=1;s.m_m('rs')}else s.nrs++;im.src=rs;if(rs.indexOf('&pe=')>=0&&(!ta||ta=='_self'||ta=='_top'||(s.wd.name&&ta==s.wd.name))){b=e=new Date;wh"
+"ile(!im.s_l&&e.getTime()-b.getTime()<500)e=new Date}return ''}return '<im'+'g sr'+'c=\"'+rs+'\" width=1 height=1 border=0 alt=\"\">'};s.gg=function(v){var s=this;if(!s.wd['s_'+v])s.wd['s_'+v]='';re"
+"turn s.wd['s_'+v]};s.glf=function(t,a){if(t.substring(0,2)=='s_')t=t.substring(2);var s=this,v=s.gg(t);if(v)s[t]=v};s.gl=function(v){var s=this;if(s.pg)s.pt(v,',','glf',0)};s.rf=function(x){var s=t"
+"his,y,i,j,h,l,a,b='',c='',t;if(x){y=''+x;i=y.indexOf('?');if(i>0){a=y.substring(i+1);y=y.substring(0,i);h=y.toLowerCase();i=0;if(h.substring(0,7)=='http://')i+=7;else if(h.substring(0,8)=='https://"
+"')i+=8;h=h.substring(i);i=h.indexOf(\"/\");if(i>0){h=h.substring(0,i);if(h.indexOf('google')>=0){a=s.sp(a,'&');if(a.length>1){l=',q,ie,start,search_key,word,kw,cd,';for(j=0;j<a.length;j++){t=a[j];i"
+"=t.indexOf('=');if(i>0&&l.indexOf(','+t.substring(0,i)+',')>=0)b+=(b?'&':'')+t;else c+=(c?'&':'')+t}if(b&&c){y+='?'+b+'&'+c;if(''+x!=y)x=y}}}}}}return x};s.hav=function(){var s=this,qs='',fv=s.link"
+"TrackVars,fe=s.linkTrackEvents,mn,i;if(s.pe){mn=s.pe.substring(0,1).toUpperCase()+s.pe.substring(1);if(s[mn]){fv=s[mn].trackVars;fe=s[mn].trackEvents}}fv=fv?fv+','+s.vl_l+','+s.vl_l2:'';for(i=0;i<s"
+".va_t.length;i++){var k=s.va_t[i],v=s[k],b=k.substring(0,4),x=k.substring(4),n=parseInt(x),q=k;if(v&&k!='linkName'&&k!='linkType'){if(s.pe||s.lnk||s.eo){if(fv&&(','+fv+',').indexOf(','+k+',')<0)v='"
+"';if(k=='events'&&fe)v=s.fs(v,fe)}if(v){if(k=='dynamicVariablePrefix')q='D';else if(k=='visitorID')q='vid';else if(k=='pageURL'){q='g';v=s.fl(v,255)}else if(k=='referrer'){q='r';v=s.fl(s.rf(v),255)"
+"}else if(k=='vmk'||k=='visitorMigrationKey')q='vmt';else if(k=='visitorMigrationServer'){q='vmf';if(s.ssl&&s.visitorMigrationServerSecure)v=''}else if(k=='visitorMigrationServerSecure'){q='vmf';if("
+"!s.ssl&&s.visitorMigrationServer)v=''}else if(k=='charSet'){q='ce';if(v.toUpperCase()=='AUTO')v='ISO8859-1';else if(s.em==2)v='UTF-8'}else if(k=='visitorNamespace')q='ns';else if(k=='cookieDomainPe"
+"riods')q='cdp';else if(k=='cookieLifetime')q='cl';else if(k=='variableProvider')q='vvp';else if(k=='currencyCode')q='cc';else if(k=='channel')q='ch';else if(k=='transactionID')q='xact';else if(k=='"
+"campaign')q='v0';else if(k=='resolution')q='s';else if(k=='colorDepth')q='c';else if(k=='javascriptVersion')q='j';else if(k=='javaEnabled')q='v';else if(k=='cookiesEnabled')q='k';else if(k=='browse"
+"rWidth')q='bw';else if(k=='browserHeight')q='bh';else if(k=='connectionType')q='ct';else if(k=='homepage')q='hp';else if(k=='plugins')q='p';else if(s.num(x)){if(b=='prop')q='c'+n;else if(b=='eVar')"
+"q='v'+n;else if(b=='list')q='l'+n;else if(b=='hier'){q='h'+n;v=s.fl(v,255)}}if(v)qs+='&'+q+'='+(k.substring(0,3)!='pev'?s.ape(v):v)}}}return qs};s.ltdf=function(t,h){t=t?t.toLowerCase():'';h=h?h.to"
+"LowerCase():'';var qi=h.indexOf('?');h=qi>=0?h.substring(0,qi):h;if(t&&h.substring(h.length-(t.length+1))=='.'+t)return 1;return 0};s.ltef=function(t,h){t=t?t.toLowerCase():'';h=h?h.toLowerCase():'"
+"';if(t&&h.indexOf(t)>=0)return 1;return 0};s.lt=function(h){var s=this,lft=s.linkDownloadFileTypes,lef=s.linkExternalFilters,lif=s.linkInternalFilters;lif=lif?lif:s.wd.location.hostname;h=h.toLower"
+"Case();if(s.trackDownloadLinks&&lft&&s.pt(lft,',','ltdf',h))return 'd';if(s.trackExternalLinks&&h.substring(0,1)!='#'&&(lef||lif)&&(!lef||s.pt(lef,',','ltef',h))&&(!lif||!s.pt(lif,',','ltef',h)))re"
+"turn 'e';return ''};s.lc=new Function('e','var s=s_c_il['+s._in+'],b=s.eh(this,\"onclick\");s.lnk=s.co(this);s.t();s.lnk=0;if(b)return this[b](e);return true');s.bc=new Function('e','var s=s_c_il['"
+"+s._in+'],f,tcf;if(s.d&&s.d.all&&s.d.all.cppXYctnr)return;s.eo=e.srcElement?e.srcElement:e.target;tcf=new Function(\"s\",\"var e;try{if(s.eo&&(s.eo.tagName||s.eo.parentElement||s.eo.parentNode))s.t"
+"()}catch(e){}\");tcf(s);s.eo=0');s.oh=function(o){var s=this,l=s.wd.location,h=o.href?o.href:'',i,j,k,p;i=h.indexOf(':');j=h.indexOf('?');k=h.indexOf('/');if(h&&(i<0||(j>=0&&i>j)||(k>=0&&i>k))){p=o"
+".protocol&&o.protocol.length>1?o.protocol:(l.protocol?l.protocol:'');i=l.pathname.lastIndexOf('/');h=(p?p+'//':'')+(o.host?o.host:(l.host?l.host:''))+(h.substring(0,1)!='/'?l.pathname.substring(0,i"
+"<0?0:i)+'/':'')+h}return h};s.ot=function(o){var t=o.tagName;t=t&&t.toUpperCase?t.toUpperCase():'';if(t=='SHAPE')t='';if(t){if(t=='INPUT'&&o.type&&o.type.toUpperCase)t=o.type.toUpperCase();else if("
+"!t&&o.href)t='A';}return t};s.oid=function(o){var s=this,t=s.ot(o),p,c,n='',x=0;if(t&&!o.s_oid){p=o.protocol;c=o.onclick;if(o.href&&(t=='A'||t=='AREA')&&(!c||!p||p.toLowerCase().indexOf('javascript"
+"')<0))n=s.oh(o);else if(c){n=s.rep(s.rep(s.rep(s.rep(''+c,\"\\r\",''),\"\\n\",''),\"\\t\",''),' ','');x=2}else if(o.value&&(t=='INPUT'||t=='SUBMIT')){n=o.value;x=3}else if(o.src&&t=='IMAGE')n=o.src"
+";if(n){o.s_oid=s.fl(n,100);o.s_oidt=x}}return o.s_oid};s.rqf=function(t,un){var s=this,e=t.indexOf('='),u=e>=0?','+t.substring(0,e)+',':'';return u&&u.indexOf(','+un+',')>=0?s.epa(t.substring(e+1))"
+":''};s.rq=function(un){var s=this,c=un.indexOf(','),v=s.c_r('s_sq'),q='';if(c<0)return s.pt(v,'&','rqf',un);return s.pt(un,',','rq',0)};s.sqp=function(t,a){var s=this,e=t.indexOf('='),q=e<0?'':s.ep"
+"a(t.substring(e+1));s.sqq[q]='';if(e>=0)s.pt(t.substring(0,e),',','sqs',q);return 0};s.sqs=function(un,q){var s=this;s.squ[un]=q;return 0};s.sq=function(q){var s=this,k='s_sq',v=s.c_r(k),x,c=0;s.sq"
+"q=new Object;s.squ=new Object;s.sqq[q]='';s.pt(v,'&','sqp',0);s.pt(s.un,',','sqs',q);v='';for(x in s.squ)if(x&&(!Object||!Object.prototype||!Object.prototype[x]))s.sqq[s.squ[x]]+=(s.sqq[s.squ[x]]?'"
+",':'')+x;for(x in s.sqq)if(x&&(!Object||!Object.prototype||!Object.prototype[x])&&s.sqq[x]&&(x==q||c<2)){v+=(v?'&':'')+s.sqq[x]+'='+s.ape(x);c++}return s.c_w(k,v,0)};s.wdl=new Function('e','var s=s"
+"_c_il['+s._in+'],r=true,b=s.eh(s.wd,\"onload\"),i,o,oc;if(b)r=this[b](e);for(i=0;i<s.d.links.length;i++){o=s.d.links[i];oc=o.onclick?\"\"+o.onclick:\"\";if((oc.indexOf(\"s_gs(\")<0||oc.indexOf(\".s"
+"_oc(\")>=0)&&oc.indexOf(\".tl(\")<0)s.eh(o,\"onclick\",0,s.lc);}return r');s.wds=function(){var s=this;if(s.apv>3&&(!s.isie||!s.ismac||s.apv>=5)){if(s.b&&s.b.attachEvent)s.b.attachEvent('onclick',s"
+".bc);else if(s.b&&s.b.addEventListener)s.b.addEventListener('click',s.bc,false);else s.eh(s.wd,'onload',0,s.wdl)}};s.vs=function(x){var s=this,v=s.visitorSampling,g=s.visitorSamplingGroup,k='s_vsn_"
+"'+s.un+(g?'_'+g:''),n=s.c_r(k),e=new Date,y=e.getYear();e.setYear(y+10+(y<1900?1900:0));if(v){v*=100;if(!n){if(!s.c_w(k,x,e))return 0;n=x}if(n%10000>v)return 0}return 1};s.dyasmf=function(t,m){if(t"
+"&&m&&m.indexOf(t)>=0)return 1;return 0};s.dyasf=function(t,m){var s=this,i=t?t.indexOf('='):-1,n,x;if(i>=0&&m){var n=t.substring(0,i),x=t.substring(i+1);if(s.pt(x,',','dyasmf',m))return n}return 0}"
+";s.uns=function(){var s=this,x=s.dynamicAccountSelection,l=s.dynamicAccountList,m=s.dynamicAccountMatch,n,i;s.un=s.un.toLowerCase();if(x&&l){if(!m)m=s.wd.location.host;if(!m.toLowerCase)m=''+m;l=l."
+"toLowerCase();m=m.toLowerCase();n=s.pt(l,';','dyasf',m);if(n)s.un=n}i=s.un.indexOf(',');s.fun=i<0?s.un:s.un.substring(0,i)};s.sa=function(un){var s=this;s.un=un;if(!s.oun)s.oun=un;else if((','+s.ou"
+"n+',').indexOf(','+un+',')<0)s.oun+=','+un;s.uns()};s.m_i=function(n,a){var s=this,m,f=n.substring(0,1),r,l,i;if(!s.m_l)s.m_l=new Object;if(!s.m_nl)s.m_nl=new Array;m=s.m_l[n];if(!a&&m&&m._e&&!m._i"
+")s.m_a(n);if(!m){m=new Object,m._c='s_m';m._in=s.wd.s_c_in;m._il=s._il;m._il[m._in]=m;s.wd.s_c_in++;m.s=s;m._n=n;m._l=new Array('_c','_in','_il','_i','_e','_d','_dl','s','n','_r','_g','_g1','_t','_"
+"t1','_x','_x1','_rs','_rr','_l');s.m_l[n]=m;s.m_nl[s.m_nl.length]=n}else if(m._r&&!m._m){r=m._r;r._m=m;l=m._l;for(i=0;i<l.length;i++)if(m[l[i]])r[l[i]]=m[l[i]];r._il[r._in]=r;m=s.m_l[n]=r}if(f==f.t"
+"oUpperCase())s[n]=m;return m};s.m_a=new Function('n','g','e','if(!g)g=\"m_\"+n;var s=s_c_il['+s._in+'],c=s[g+\"_c\"],m,x,f=0;if(!c)c=s.wd[\"s_\"+g+\"_c\"];if(c&&s_d)s[g]=new Function(\"s\",s_ft(s_d"
+"(c)));x=s[g];if(!x)x=s.wd[\\'s_\\'+g];if(!x)x=s.wd[g];m=s.m_i(n,1);if(x&&(!m._i||g!=\"m_\"+n)){m._i=f=1;if((\"\"+x).indexOf(\"function\")>=0)x(s);else s.m_m(\"x\",n,x,e)}m=s.m_i(n,1);if(m._dl)m._dl"
+"=m._d=0;s.dlt();return f');s.m_m=function(t,n,d,e){t='_'+t;var s=this,i,x,m,f='_'+t,r=0,u;if(s.m_l&&s.m_nl)for(i=0;i<s.m_nl.length;i++){x=s.m_nl[i];if(!n||x==n){m=s.m_i(x);u=m[t];if(u){if((''+u).in"
+"dexOf('function')>=0){if(d&&e)u=m[t](d,e);else if(d)u=m[t](d);else u=m[t]()}}if(u)r=1;u=m[t+1];if(u&&!m[f]){if((''+u).indexOf('function')>=0){if(d&&e)u=m[t+1](d,e);else if(d)u=m[t+1](d);else u=m[t+"
+"1]()}}m[f]=1;if(u)r=1}}return r};s.m_ll=function(){var s=this,g=s.m_dl,i,o;if(g)for(i=0;i<g.length;i++){o=g[i];if(o)s.loadModule(o.n,o.u,o.d,o.l,o.e,1);g[i]=0}};s.loadModule=function(n,u,d,l,e,ln){"
+"var s=this,m=0,i,g,o=0,f1,f2,c=s.h?s.h:s.b,b,tcf;if(n){i=n.indexOf(':');if(i>=0){g=n.substring(i+1);n=n.substring(0,i)}else g=\"m_\"+n;m=s.m_i(n)}if((l||(n&&!s.m_a(n,g)))&&u&&s.d&&c&&s.d.createElem"
+"ent){if(d){m._d=1;m._dl=1}if(ln){if(s.ssl)u=s.rep(u,'http:','https:');i='s_s:'+s._in+':'+n+':'+g;b='var s=s_c_il['+s._in+'],o=s.d.getElementById(\"'+i+'\");if(s&&o){if(!o.l&&s.wd.'+g+'){o.l=1;if(o."
+"i)clearTimeout(o.i);o.i=0;s.m_a(\"'+n+'\",\"'+g+'\"'+(e?',\"'+e+'\"':'')+')}';f2=b+'o.c++;if(!s.maxDelay)s.maxDelay=250;if(!o.l&&o.c<(s.maxDelay*2)/100)o.i=setTimeout(o.f2,100)}';f1=new Function('e"
+"',b+'}');tcf=new Function('s','c','i','u','f1','f2','var e,o=0;try{o=s.d.createElement(\"script\");if(o){o.type=\"text/javascript\";'+(n?'o.id=i;o.defer=true;o.onload=o.onreadystatechange=f1;o.f2=f"
+"2;o.l=0;':'')+'o.src=u;c.appendChild(o);'+(n?'o.c=0;o.i=setTimeout(f2,100)':'')+'}}catch(e){o=0}return o');o=tcf(s,c,i,u,f1,f2)}else{o=new Object;o.n=n+':'+g;o.u=u;o.d=d;o.l=l;o.e=e;g=s.m_dl;if(!g)"
+"g=s.m_dl=new Array;i=0;while(i<g.length&&g[i])i++;g[i]=o}}else if(n){m=s.m_i(n);m._e=1}return m};s.vo1=function(t,a){if(a[t]||a['!'+t])this[t]=a[t]};s.vo2=function(t,a){if(!a[t]){a[t]=this[t];if(!a"
+"[t])a['!'+t]=1}};s.dlt=new Function('var s=s_c_il['+s._in+'],d=new Date,i,vo,f=0;if(s.dll)for(i=0;i<s.dll.length;i++){vo=s.dll[i];if(vo){if(!s.m_m(\"d\")||d.getTime()-vo._t>=s.maxDelay){s.dll[i]=0;"
+"s.t(vo)}else f=1}}if(s.dli)clearTimeout(s.dli);s.dli=0;if(f){if(!s.dli)s.dli=setTimeout(s.dlt,s.maxDelay)}else s.dll=0');s.dl=function(vo){var s=this,d=new Date;if(!vo)vo=new Object;s.pt(s.vl_g,','"
+",'vo2',vo);vo._t=d.getTime();if(!s.dll)s.dll=new Array;s.dll[s.dll.length]=vo;if(!s.maxDelay)s.maxDelay=250;s.dlt()};s.t=function(vo,id){var s=this,trk=1,tm=new Date,sed=Math&&Math.random?Math.floo"
+"r(Math.random()*10000000000000):tm.getTime(),sess='s'+Math.floor(tm.getTime()/10800000)%10+sed,y=tm.getYear(),vt=tm.getDate()+'/'+tm.getMonth()+'/'+(y<1900?y+1900:y)+' '+tm.getHours()+':'+tm.getMin"
+"utes()+':'+tm.getSeconds()+' '+tm.getDay()+' '+tm.getTimezoneOffset(),tcf,tfs=s.gtfs(),ta='',q='',qs='',code='',vb=new Object;s.gl(s.vl_g);s.uns();s.m_ll();if(!s.td){var tl=tfs.location,a,o,i,x='',"
+"c='',v='',p='',bw='',bh='',j='1.0',k=s.c_w('s_cc','true',0)?'Y':'N',hp='',ct='',pn=0,ps;if(String&&String.prototype){j='1.1';if(j.match){j='1.2';if(tm.setUTCDate){j='1.3';if(s.isie&&s.ismac&&s.apv>"
+"=5)j='1.4';if(pn.toPrecision){j='1.5';a=new Array;if(a.forEach){j='1.6';i=0;o=new Object;tcf=new Function('o','var e,i=0;try{i=new Iterator(o)}catch(e){}return i');i=tcf(o);if(i&&i.next)j='1.7'}}}}"
+"}if(s.apv>=4)x=screen.width+'x'+screen.height;if(s.isns||s.isopera){if(s.apv>=3){v=s.n.javaEnabled()?'Y':'N';if(s.apv>=4){c=screen.pixelDepth;bw=s.wd.innerWidth;bh=s.wd.innerHeight}}s.pl=s.n.plugin"
+"s}else if(s.isie){if(s.apv>=4){v=s.n.javaEnabled()?'Y':'N';c=screen.colorDepth;if(s.apv>=5){bw=s.d.documentElement.offsetWidth;bh=s.d.documentElement.offsetHeight;if(!s.ismac&&s.b){tcf=new Function"
+"('s','tl','var e,hp=0;try{s.b.addBehavior(\"#default#homePage\");hp=s.b.isHomePage(tl)?\"Y\":\"N\"}catch(e){}return hp');hp=tcf(s,tl);tcf=new Function('s','var e,ct=0;try{s.b.addBehavior(\"#default"
+"#clientCaps\");ct=s.b.connectionType}catch(e){}return ct');ct=tcf(s)}}}else r=''}if(s.pl)while(pn<s.pl.length&&pn<30){ps=s.fl(s.pl[pn].name,100)+';';if(p.indexOf(ps)<0)p+=ps;pn++}s.resolution=x;s.c"
+"olorDepth=c;s.javascriptVersion=j;s.javaEnabled=v;s.cookiesEnabled=k;s.browserWidth=bw;s.browserHeight=bh;s.connectionType=ct;s.homepage=hp;s.plugins=p;s.td=1}if(vo){s.pt(s.vl_g,',','vo2',vb);s.pt("
+"s.vl_g,',','vo1',vo)}if(s.usePlugins)s.doPlugins(s);var l=s.wd.location,r=tfs.document.referrer;if(!s.pageURL)s.pageURL=l.href?l.href:l;if(!s.referrer&&!s._1_referrer){s.referrer=r;s._1_referrer=1}"
+"if((vo&&vo._t)||!s.m_m('d')){s.m_m('g');if(s.lnk||s.eo){var o=s.eo?s.eo:s.lnk;if(!o)return '';var p=s.pageName,w=1,t=s.ot(o),n=s.oid(o),x=o.s_oidt,h,l,i,oc;if(s.eo&&o==s.eo){while(o&&!n&&t!='BODY')"
+"{o=o.parentElement?o.parentElement:o.parentNode;if(!o)return '';t=s.ot(o);n=s.oid(o);x=o.s_oidt}oc=o.onclick?''+o.onclick:'';if((oc.indexOf(\"s_gs(\")>=0&&oc.indexOf(\".s_oc(\")<0)||oc.indexOf(\".t"
+"l(\")>=0)return ''}ta=n?o.target:1;h=s.oh(o);i=h.indexOf('?');h=s.linkLeaveQueryString||i<0?h:h.substring(0,i);l=s.linkName;t=s.linkType?s.linkType.toLowerCase():s.lt(h);if(t&&(h||l))q+='&pe=lnk_'+"
+"(t=='d'||t=='e'?s.ape(t):'o')+(h?'&pev1='+s.ape(h):'')+(l?'&pev2='+s.ape(l):'');else trk=0;if(s.trackInlineStats){if(!p){p=s.pageURL;w=0}t=s.ot(o);i=o.sourceIndex;if(s.gg('objectID')){n=s.gg('objec"
+"tID');x=1;i=1}if(p&&n&&t)qs='&pid='+s.ape(s.fl(p,255))+(w?'&pidt='+w:'')+'&oid='+s.ape(s.fl(n,100))+(x?'&oidt='+x:'')+'&ot='+s.ape(t)+(i?'&oi='+i:'')}}if(!trk&&!qs)return '';s.sampled=s.vs(sed);if("
+"trk){if(s.sampled)code=s.mr(sess,(vt?'&t='+s.ape(vt):'')+s.hav()+q+(qs?qs:s.rq(s.un)),0,id,ta);qs='';s.m_m('t');if(s.p_r)s.p_r();s.referrer=''}s.sq(qs);}else{s.dl(vo);}if(vo)s.pt(s.vl_g,',','vo1',v"
+"b);s.lnk=s.eo=s.linkName=s.linkType=s.wd.s_objectID=s.ppu=s.pe=s.pev1=s.pev2=s.pev3='';if(s.pg)s.wd.s_lnk=s.wd.s_eo=s.wd.s_linkName=s.wd.s_linkType='';if(!id&&!s.tc){s.tc=1;s.flushBufferedRequests("
+")}return code};s.tl=function(o,t,n,vo){var s=this;s.lnk=s.co(o);s.linkType=t;s.linkName=n;s.t(vo)};if(pg){s.wd.s_co=function(o){var s=s_gi(\"_\",1,1);return s.co(o)};s.wd.s_gs=function(un){var s=s_"
+"gi(un,1,1);return s.t()};s.wd.s_dc=function(un){var s=s_gi(un,1);return s.t()}}s.ssl=(s.wd.location.protocol.toLowerCase().indexOf('https')>=0);s.d=document;s.b=s.d.body;if(s.d.getElementsByTagName"
+"){s.h=s.d.getElementsByTagName('HEAD');if(s.h)s.h=s.h[0]}s.n=navigator;s.u=s.n.userAgent;s.ns6=s.u.indexOf('Netscape6/');var apn=s.n.appName,v=s.n.appVersion,ie=v.indexOf('MSIE '),o=s.u.indexOf('Op"
+"era '),i;if(v.indexOf('Opera')>=0||o>0)apn='Opera';s.isie=(apn=='Microsoft Internet Explorer');s.isns=(apn=='Netscape');s.isopera=(apn=='Opera');s.ismac=(s.u.indexOf('Mac')>=0);if(o>0)s.apv=parseFl"
+"oat(s.u.substring(o+6));else if(ie>0){s.apv=parseInt(i=v.substring(ie+5));if(s.apv>3)s.apv=parseFloat(i)}else if(s.ns6>0)s.apv=parseFloat(s.u.substring(s.ns6+10));else s.apv=parseFloat(v);s.em=0;if"
+"(String.fromCharCode){i=escape(String.fromCharCode(256)).toUpperCase();s.em=(i=='%C4%80'?2:(i=='%U0100'?1:0))}s.sa(un);s.vl_l='dynamicVariablePrefix,visitorID,vmk,visitorMigrationKey,visitorMigrati"
+"onServer,visitorMigrationServerSecure,ppu,charSet,visitorNamespace,cookieDomainPeriods,cookieLifetime,pageName,pageURL,referrer,currencyCode';s.va_l=s.sp(s.vl_l,',');s.vl_t=s.vl_l+',variableProvide"
+"r,channel,server,pageType,transactionID,purchaseID,campaign,state,zip,events,products,linkName,linkType';for(var n=1;n<51;n++)s.vl_t+=',prop'+n+',eVar'+n+',hier'+n+',list'+n;s.vl_l2=',tnt,pe,pev1,p"
+"ev2,pev3,resolution,colorDepth,javascriptVersion,javaEnabled,cookiesEnabled,browserWidth,browserHeight,connectionType,homepage,plugins';s.vl_t+=s.vl_l2;s.va_t=s.sp(s.vl_t,',');s.vl_g=s.vl_t+',track"
+"ingServer,trackingServerSecure,trackingServerBase,fpCookieDomainPeriods,disableBufferedRequests,mobile,visitorSampling,visitorSamplingGroup,dynamicAccountSelection,dynamicAccountList,dynamicAccount"
+"Match,trackDownloadLinks,trackExternalLinks,trackInlineStats,linkLeaveQueryString,linkDownloadFileTypes,linkExternalFilters,linkInternalFilters,linkTrackVars,linkTrackEvents,linkNames,lnk,eo,_1_ref"
+"errer';s.va_g=s.sp(s.vl_g,',');s.pg=pg;s.gl(s.vl_g);if(!ss)s.wds()",
w=window,l=w.s_c_il,n=navigator,u=n.userAgent,v=n.appVersion,e=v.indexOf('MSIE '),m=u.indexOf('Netscape6/'),a,i,s;if(un){un=un.toLowerCase();if(l)for(i=0;i<l.length;i++){s=l[i];if(!s._c||s._c=='s_c'){if(s.oun==un)return s;else if(s.fs&&s.sa&&s.fs(s.oun,un)){s.sa(un);return s}}}}w.s_an='0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
w.s_sp=new Function("x","d","var a=new Array,i=0,j;if(x){if(x.split)a=x.split(d);else if(!d)for(i=0;i<x.length;i++)a[a.length]=x.substring(i,i+1);else while(i>=0){j=x.indexOf(d,i);a[a.length]=x.subst"
+"ring(i,j<0?x.length:j);i=j;if(i>=0)i+=d.length}}return a");
w.s_jn=new Function("a","d","var x='',i,j=a.length;if(a&&j>0){x=a[0];if(j>1){if(a.join)x=a.join(d);else for(i=1;i<j;i++)x+=d+a[i]}}return x");
w.s_rep=new Function("x","o","n","return s_jn(s_sp(x,o),n)");
w.s_d=new Function("x","var t='`^@$#',l=s_an,l2=new Object,x2,d,b=0,k,i=x.lastIndexOf('~~'),j,v,w;if(i>0){d=x.substring(0,i);x=x.substring(i+2);l=s_sp(l,'');for(i=0;i<62;i++)l2[l[i]]=i;t=s_sp(t,'');d"
+"=s_sp(d,'~');i=0;while(i<5){v=0;if(x.indexOf(t[i])>=0) {x2=s_sp(x,t[i]);for(j=1;j<x2.length;j++){k=x2[j].substring(0,1);w=t[i]+k;if(k!=' '){v=1;w=d[b+l2[k]]}x2[j]=w+x2[j].substring(1)}}if(v)x=s_jn("
+"x2,'');else{w=t[i]+' ';if(x.indexOf(w)>=0)x=s_rep(x,w,t[i]);i++;b+=62}}}return x");
w.s_fe=new Function("c","return s_rep(s_rep(s_rep(c,'\\\\','\\\\\\\\'),'\"','\\\\\"'),\"\\n\",\"\\\\n\")");
w.s_fa=new Function("f","var s=f.indexOf('(')+1,e=f.indexOf(')'),a='',c;while(s>=0&&s<e){c=f.substring(s,s+1);if(c==',')a+='\",\"';else if((\"\\n\\r\\t \").indexOf(c)<0)a+=c;s++}return a?'\"'+a+'\"':"
+"a");
w.s_ft=new Function("c","c+='';var s,e,o,a,d,q,f,h,x;s=c.indexOf('=function(');while(s>=0){s++;d=1;q='';x=0;f=c.substring(s);a=s_fa(f);e=o=c.indexOf('{',s);e++;while(d>0){h=c.substring(e,e+1);if(q){i"
+"f(h==q&&!x)q='';if(h=='\\\\')x=x?0:1;else x=0}else{if(h=='\"'||h==\"'\")q=h;if(h=='{')d++;if(h=='}')d--}if(d>0)e++}c=c.substring(0,s)+'new Function('+(a?a+',':'')+'\"'+s_fe(c.substring(o+1,e))+'\")"
+"'+c.substring(e+1);s=c.indexOf('=function(')}return c;");
c=s_d(c);if(e>0){a=parseInt(i=v.substring(e+5));if(a>3)a=parseFloat(i)}else if(m>0)a=parseFloat(u.substring(m+10));else a=parseFloat(v);if(a>=5&&v.indexOf('Opera')<0&&u.indexOf('Opera')<0){w.s_c=new Function("un","pg","ss","var s=this;"+c);return new s_c(un,pg,ss)}else s=new Function("un","pg","ss","var s=new Object;"+s_ft(c)+";return s");return s(un,pg,ss)}




/**
 * global namespace for dhl
 */

var dhl = {};

/**
 * grouped eventlist of document onready events
 */

dhl.eventlist = {
	// events which must not be triggered more than once 
	singlecall: {},
	
	// events than can safely be triggered multiple times
	multicall: {}
}

/**
 * fix nasty background image flickering in IE6
 */

if ($.browser.msie && $.browser.version < 7) {
	document.execCommand('BackgroundImageCache', false, true);
}
/**
 * common message layer class
 */

dhl.messages = {
	
	lang: {
		txt: "No message defined!",
		cancel: "Cancel",
		go: "Next"
	},
	
	/**
	 * show a message layer
	 * @param link - link that was clicked
	 * @param msg - messages to be displayed
	 * @param callbackFn - callback function when the user clicks the "go" link
	 */
	show: function(link, msg, callbackFn) {
		$.extend(dhl.messages.lang, msg);

		var messages_html  = '<div id="messages" class="cl">'; //generate temp. inline html
		if (dhl.messages.lang.headline) {
			messages_html += '<h2>' + dhl.messages.lang.headline + '</h2>';
		}
		messages_html += '<p>' + dhl.messages.lang.txt + '</p>';
		messages_html += '<p><a href="#" class="left">' + dhl.messages.lang.cancel + '</a><a class="right" href="#">' + dhl.messages.lang.go + '</a></p>';
		messages_html += '</div>';

		$('#colorbox').after('<div class="hd">' + messages_html + '</div>');//inject 2 dom
		
		$.fn.colorbox({ //inits colorbox
			inline: true,
			width: "400",
			href: "#messages",
			title: false,
			open: true // open without user input
		},
		function() { //callback
			$('#messages a').click(function(){
				if ($(this).hasClass('right')) {
					callbackFn(link);
				}
				$.fn.colorbox.close();
			});
		});
		$('#cboxInlineTemp').parent('.hd').remove(); //remove temp html
	}
}

/**
 * common link classes
 */

$(document).ready(function() {
	dhl.links.init();
	dhl.eventlist.multicall.links = dhl.links.init;
});

dhl.links = {
	
	lang: {
		headline: "Disclaimer",
		txt: "You are being transferred to a page outside Deutsche Post's domain of responsibility. The publisher of the website, not Deutsche Post, is liable for the content of the page you are visiting. To continue, please click on the 'Next' link."
	},
	
	/**
	 * initialize component
	 */
	init: function() {
		dhl.links.popuphandler();
		dhl.links.external();
		dhl.links.anchorTrigger();
	},
	
	/**
	 * eventhandler for external and disclaimer links
	 */
	external: function() {
		 //bind eventlistener on disclaimer links
		$('#dhlde a.disclaimer').click(function(e) {
			e.preventDefault();
			dhl.messages.show($(this), dhl.links.lang, dhl.links.disclaimer);
		});

		 //bind eventlistener on external links
		$('#dhlde a.external').click(function(e) {
			e.preventDefault();
			if($(this).hasClass('disclaimer')) {
				return false;
			} 
			var ext_url = $(this).attr('href');
			if (ext_url && ext_url != 'undefined') {
				var ext_window = dhl.links.open(ext_url, 'dhl_window', null);
			}
		});
	},
	
	/**
	 * set popup eventhandler
	 */
	popuphandler: function() {
		var popup_links = $('#dhlde a.popup').not('.refresh');
		popup_links.removeClass('external');
		popup_links.click(function(e) {
			var curlink = $(this);
			if (curlink.hasClass('disclaimer')) {
				return false;
			}
			e.preventDefault();
			dhl.links.popup(curlink); //open popup
		});
	},
	
	/**
	 * opens a popup
	 * @param link - link which triggers the popup
	 */
	popup: function(link) {
		var url = link.attr('href');
		var option = link.attr('rel').split('_');
		var params = {
			width: option[0],
			height: option[1]
		}
		if($.inArray('menubar',option) != "-1") params.menubar = "yes";
		var popup = dhl.links.open(url, '_blank', params);
		if(popup) popup.focus();
	},
	
	/**
	 * default window parameters
	 */
	windowParams: {
		width: 500,
		height: 600,
		status: 'yes',
		scrollbars: 'yes',
		resizable: 'yes',
		menubar: 'no',
		toolbar: 'no'
	},

	/**
	 * open windows
	 * @param: url - url of page to load
	 * @param: customParams - customized window config params
	 */
	open: function(url, name, customParams) {
		name ? name : '_blank';

		var params = '';
		if (customParams) {
			customParams = $.extend({}, dhl.links.windowParams, customParams);
			for (var i in customParams) {
				params += i + '=' + customParams[i] + ',';
			}
		}
		return window.open(url, name, params.substring(0, params.length-1));
	},
	
	/**
	 * open disclaimer links in popup or new window
	 * @param link - link that was clicked
 	 */
	disclaimer: function(link) {
		link.hasClass('popup') ? dhl.links.popup(link) : dhl.links.open(link.attr('href'),'dhl_window',null);
	},
	
	/**
	 * check if the location contains an anchor (#) and "reload" document
	 */
	anchorTrigger: function() {
		if($.browser.msie) {
			var loc = window.location.href;

			if (loc.indexOf('#') != -1) {
				$(window).load(function() {
					window.location.href = loc;
				});
			}
		}
	}
}

/**
 * symbol icon with infotext
 */

$(document).ready(function() {
	dhl.symbol.init();
	dhl.eventlist.multicall.symbol = dhl.symbol.init;
});

dhl.symbol = {
	
	/**
	 * initialize component
	 */
	init: function() {
		if($.browser.msie && $.browser.version < 7) {
			dhl.symbol.help();
		}
	},
	
	/**
	 * z-index bug fix for ie - help info window
	 */
	help: function() {
		$('#content-wrapper .symbol').hover(
			function(){
				$(this).children('span').css({
					'top': '2.273em',
					'z-index':'1000'
				});
			},
			function(){
				$(this).children('span').css('z-index', '0');
			}
		);
	}
}



/**
 * colorbox plugin settings
 */

dhl.colorbox = {
	
	/**
	 * default colorbox options
	 */
	options: {
		transition: 'elastic',
		opacity: 0.85,
		speed: 300,
		initialWidth: 250,
		initialHeight: 250
	}
}



/**
 * component: main-nav
 */

$(document).ready(function() {
	dhl.main_nav.init();
	dhl.eventlist.singlecall.main_nav = dhl.main_nav.init;
});

dhl.main_nav = {
	
	/**
	 * initialize component
	 */
	init: function() {
		if($.browser.msie || $.browser.version < 7) {
			dhl.main_nav.toggle();
			dhl.main_nav.active();
		}
	},

	/**
	 * toogles the main-nav for IE6
	 */
	toggle: function() {
		var li = $('#dhlde .main-nav ul li:has(ul)'); 
		li.hover(
			function(){
				$(this).children('ul').css('display','block').bgiframe();
			},
			function(){
				$(this).children('ul').css('display','none');
			}
		);
	},
	
	/**
	 * helpes ie6 to make links active
	 */
	active: function() {
		$('#dhlde .main-nav ul .current a:first').css('color','#fc0'); 
	}
}

/**
 * component: textzoom
 */

$(document).ready(function() {
	dhl.textzoom.init()
	dhl.eventlist.singlecall.textzoom = dhl.textzoom.init;
});

dhl.textzoom = {
	
	/**
	 * language definitions
	 */
	lang: {
		min: {
			text: "-A",
			hint: "Text smaller",
			range: "You have reached the lowest zoom level."
		},
		normal: {
			text: "A",
			hint: "Text normal"
		},
		max: {
			text: "A+",
			hint: "Text bigger",
			range: "You have reached the highest zoom level."
		},
		font: {
			text: "Font size"
		}
	},

	/**
	 * initialize component
	 */
	init: function() {
		dhl.textzoom.createZoom();
		dhl.textzoom.addEvents();
		dhl.textzoom.checkIphone();
	},

	/**
	 * create the zoom links
	 */
	createZoom: function() {
		var zoomContent = '<p class="textzoom">';
		zoomContent += '<a class="normal first" href="#" title="' + dhl.textzoom.lang.font.text + '">' + dhl.textzoom.lang.font.text + '</a><span class="hd">,</span>';
		zoomContent += '<a class="smaller" href="#" title="' + dhl.textzoom.lang.min.hint + '">' + dhl.textzoom.lang.min.text + '</a><span class="hd">,</span>';
		zoomContent += '<a class="normal" href="#" title="' + dhl.textzoom.lang.normal.hint + '">' + dhl.textzoom.lang.normal.text + '</a><span class="hd">,</span>';
		zoomContent += '<a class="bigger" href="#" title="' + dhl.textzoom.lang.max.hint + '">' + dhl.textzoom.lang.max.text + '</a>';
		zoomContent += '</p>';

		// append zoom to service navigation list and change css properties
		$('.service-nav ul').append('<li>' + zoomContent + '</li>').css({
			'width': dhl.textzoom.calculateNavWidth()
		});

		// start resizing if needed
		dhl.textzoom.readCookie();
	},
	
	/**
	 * ranges for textsizes (in pixel)
	 */
	range: {
		min: 9,
		normal: 10,
		max: 50,
		step: 1
	},

	/**
	 * add events to the "zoom" links
	 */
	addEvents: function() {
		$('.textzoom a.smaller').click(function(e) {
			e.preventDefault();
			var fontsize = dhl.textzoom.getFontSize() - dhl.textzoom.range.step;

			if (fontsize >= dhl.textzoom.range.min) {
				dhl.textzoom.setFontSize(fontsize, true);
			} else {
				dhl.textzoom.displayMessage(dhl.textzoom.lang.min.range);
			}
		});

		$('.textzoom a.normal').click(function(e) {
			e.preventDefault();
			var fontsize = dhl.textzoom.getFontSize();

			if (fontsize != dhl.textzoom.range.normal) {
				dhl.textzoom.setFontSize(dhl.textzoom.range.normal, false);
				dhl.textzoom.setCookie(null);
			}
		});

		$('.textzoom a.bigger').click(function(e) {
			e.preventDefault();
			var fontsize = dhl.textzoom.getFontSize() + dhl.textzoom.range.step;

			if (fontsize <= dhl.textzoom.range.max) {
				dhl.textzoom.setFontSize(fontsize, true);
			} else {
				dhl.textzoom.displayMessage(dhl.textzoom.lang.max.range);
			}
		});
	},

	/**
	 * get body font size
	 * @return {Int} fontsize
	 */
	getFontSize: function() {
		var size;

		if ($.browser.msie && $.browser.version == 6) {
			size = dhl.textzoom.convertFontSize(parseFloat(document.getElementsByTagName('body')[0].currentStyle.fontSize), 'px');
		} else {
			size = parseInt($('body').css('font-size'));
		}

		return size;
	},

	/**
	 * set body font size
	 * @param {Int} size - new body textsize in px
	 * @param {Boolean} setCookie - switch if cookie should be set
	 */
	setFontSize: function(size, setCookie) {
		if($.browser.msie && $.browser.version < 8) { // plain version
			$('body').css('font-size', $.browser.version == 6 ? dhl.textzoom.convertFontSize(size, '%') + '%' : size + 'px');
		} else {
			$('body').animate({ // animated version
				fontSize: size + 'px'
			}, 500);
		}

		// set cookie
		if (setCookie) {
			dhl.textzoom.setCookie(size);
		}
	},

	/**
	 * convert body font size for IE6 (px <-> %)
	 * @param {Int} size - textsize in px
	 * @param {String} output - output format
	 * @return {Int} fontsize
	 */
	convertFontSize: function(size, output) {
		return output == 'px' ? size / 100 * 16 : size / 16 * 100;
	},

	/**
	 * display a notification message below the links
	 * @param {String} message - text to be displayed
	 */
	displayMessage: function(message) {
		$('.textzoom').append('<strong>' + message + '</strong>');
		$('.textzoom strong').fadeOut(3000, function(e) {
			$(this).remove();
		});
	},

	/**
	 * clone navigation and get width
	 */
	calculateNavWidth: function() {
		// temporarily clone the navigation for calculation reasons
		$('body').append($('.service-nav').clone().attr('id','service-nav-calculation'));
		$('#service-nav-calculation').css({
			'float': 'none',
			'height': '0',
			'padding': '0',
			'visibility': 'hidden',
			'width': 'auto'
		});

		if ($.browser.msie && $.browser.version < 8) {
			$('#service-nav-calculation ul .textzoom').css('float', 'left');
		}

		// get width
		var width = $('#service-nav-calculation ul').css('width', 'auto').width();

		// remove the calculation object
		$('#service-nav-calculation').remove();

		return (width + 5) / 10 + 'em';
	},
	
	/**
	 * sets the font smaller for iphone - only if user doesnt set custom font-size
	 */
	checkIphone: function() {
		if (!$.cookie(dhl.textzoom.cookie.name)) {
			dhl.textzoom.iphone = navigator.userAgent.toLowerCase().indexOf('iphone')!=-1;
			if (dhl.textzoom.iphone) { 
				$('.textzoom a.smaller').trigger('click');
			}
		}
	},

	/**
	 * cookie: settings
	 */
	cookie: {
		name: 'dhlde_textzoom',
		expires: 9999,
		path: '/'
	},

	/**
	 * initialize the textsize if it is set in a cookie
	 */
	readCookie: function() {
		var cookie;
		if (cookie = $.cookie(dhl.textzoom.cookie.name)) { // read cookie @ start
			if (cookie != dhl.textzoom.getFontSize()) {
				dhl.textzoom.setFontSize(cookie, false);
			}
		}
	},

	/**
	 * store the new textsize in a cookie
	 * @param {String} value - value of cookie
	 */
	setCookie: function(value) {
		var settings = dhl.textzoom.cookie;
		$.cookie(settings.name, value, {
			expires: settings.expires,
			path: settings.path
		});
	}
}



/**
 * component: image
 * description: add colorbox script to image if image component has a zoomable flag
 */

$(document).ready(function() {
	dhl.image.init();
	dhl.eventlist.multicall.image = dhl.image.init;
});

dhl.image = {

	/**
	 * initialize component
	 */
	init: function() {
		dhl.image.zoomByClass();
	},
	
	/**
	 * inits component for zoom - called from component init js
	 * @param: component - name of component
	 */
	zoom: function(component) {
		$('#dhlde .' + component + ' .image .img a').colorbox(dhl.colorbox.options);
		dhl.image.lense();
	},
	
	/**
	 * search for all components with class .zoom and setup for colorbox
	 * not implemented yet
	 */
	zoomByClass: function() {
		$('#dhlde .image .zoom a').colorbox(dhl.colorbox.options);
		dhl.image.lense();
	},
	
	/**
	 * append a span element to the image link
	 */
	lense: function() {
		$('#dhlde .image .zoom a').append('<span></span>');
	}
}
/**
 * component: richtext
 */

$(document).ready(function() {
    dhl.richtext.init();
    dhl.eventlist.multicall.richtext = dhl.richtext.init;
});

dhl.richtext = {
    /**
     * language definitions
     */
    lang: {
        moretext: "more",
        filterreset: "Reset filter",
        filtersearch: "Search",
        filtershow: "Filter",
        sort: "Sort"
    },

    /**
     * initialize component
     */
    init: function() {
        if($.browser.msie || $.browser.version < 7) {
            dhl.richtext.infotext();
        }
        dhl.richtext.more_toggle();
        //dhl.richtext.dummy();
        dhl.richtext.tables();
    },

    /**
     * toogles the infotext popup for IE6
     */
    infotext: function() {
        var infotext = $('#content-wrapper .richtext .infotext'); 
        infotext.hover(
            function(){
                $(this).css({
                    'position': 'relative',
                    'z-index': '1000'
                });
                $(this).children('span.infotext-inner').css({
                    'left': '1em',
                    'top': '1.818em',
                    'z-index': '1000'
                });
            },
            function(){
                $(this).css({
                    'position': 'static',
                    'z-index': '0'
                });
                $(this).children('span.infotext-inner').css({
                    'left': '-400em',
                    'top': 'auto',
                    'z-index': '0'
                });
            }
        );
    },

    /**
     * toogles some block of text (show/hide)
     */
    more_toggle: function(){
        var mores = $('#content-wrapper .richtext .more');

        // iterate through all the closed sections
        mores.each(function() {
            if ($(this).parent().find('span.morelink').length == 0) {
                // hide each more section
                $(this).hide().addClass('hd').css('display','block');
    
                // get richtext or article headline
                var headline = $('#content-wrapper .richtext').children('h3').eq(0).text();
                
                if (headline == '') {
                    headline = $('#content-wrapper .article').children('h2').eq(0).text();
                }
    
                // create new elements
                var span = document.createElement('span');
                span.className = 'morelink';
    
                var a = document.createElement('a');
                a.href = '#';
                a.title = dhl.richtext.lang.moretext;
                a.appendChild(document.createTextNode(dhl.richtext.lang.moretext));
            
                var span_hidden = document.createElement('span');
                span_hidden.className = 'hd';
                span_hidden.appendChild(document.createTextNode(': ' + headline));
    
                a.appendChild(span_hidden);
                span.appendChild(a);
    
                // add new element before more section
                $(this).before(span);
                // add click listener to morelink
                $(this).parent().find('span.morelink a').click(function() {
                    var link = $(this);
                    link.toggleClass('open');
                    
                    var inner_more = link.parent('span').next();
                    if (inner_more.hasClass('hd')) {
                        inner_more.css('display','none').removeClass('hd');
                    }
                    
                    inner_more.slideToggle('fast', function() {
                        if (!link.hasClass('open')) {
                            inner_more.addClass('hd').css('display','block');
                        }
                    });
                    
                    return false;
                });
            }
        });
    },
    
    /**
     * handle table sort - filter - search
     */
    tables: function() {
        var tables = $('#content-wrapper .table table');
        var scope = this;
        tables.each(function() {
            var el = $(this);
            //prevent double init
            if(el.hasClass('init')) return;
            var id = el.closest('.table').attr('id');
            var cols = el.find('tr:first > *').length;
            var th = el.find('tr:first th');
            //read config
            if(dhl_config.tables) {
               if(dhl_config.tables[id]) {
                    //prepare dom
                    if(th.length == cols) { //prevent tables with first col as header
                        if(el.find('tr').eq(1).find('th').length > 0) return; //prevent tables with first col and first row as header 
                        el.addClass('init');
                        el.prepend('<thead><tr>' + th.parent('tr').html() + '</tr></thead>');
                        th.closest('table').find('tbody th').parent('tr').remove();
                        th = el.find('thead th');
                        th.wrapInner('<div class="cl"><div class="text"/></div>');
                        var tr = el.find('tbody tr');
                        //add filter reset and search input field
                        if(dhl_config.tables[id]['filter'] || dhl_config.tables[id]['search']) {
                            el.before('<p class="filter cl">' +
                                '<a class="filterreset" href="#" title="' + dhl.richtext.lang.filterreset + '">' + dhl.richtext.lang.filterreset + '</a>' +
                                '<label for="search_' + id + '" class="hd">' + dhl.richtext.lang.filtersearch + 
                                ':</label><input type="text" class="text hd" value="' + dhl.richtext.lang.filtersearch + 
                                '" id="search_' + id + '"/></p>'
                            );
                            //reset filter link
                            var filterContainer = el.closest('.richtext').find('.filter');
                            filterContainer.find('.filterreset').click(function(e) {
                                e.preventDefault();
                                e.stopPropagation();
                                tr.removeClass('visible filtered').show().addClass('visible').find('td').removeClass('filtered');
                                th.find('.filter').addClass('closed').removeClass('opened');
                                th.find('.links').addClass('hd');
                            });
                        }
                    } else return;
                   //filter table ?
                   if(dhl_config.tables[id]['filter']) {
                       dhl.richtext.filterable(el,th,tr,id);    
                   }
                   //sort table ?
                   if(dhl_config.tables[id]['sort']) {
                       dhl.richtext.sortable(el,th,tr,id);
                   }
                   //searchable ?
                   if(dhl_config.tables[id]['search']) {
                       dhl.richtext.searchable(el,th,tr,id);
                   }
               } 
            }
        });
    },
    
    /**
     * search whole table
     */
    filterAll: function(selector,query) {
        query =	$.trim(query); //trim white space
        query = query.replace(/ /gi, '|'); //add OR for regex
        $(selector).each(function() {
            ($(this).text().search(new RegExp(query, "i")) < 0) ? $(this).hide().removeClass('visible filtered') : $(this).show().addClass('visible filtered');
        });
    },
    
    /**
     * search col
     */
    filterCol: function(selector,query,col) {
        query =	$.trim(query); //trim white space
        $(selector).each(function() {
            ($(this).find('td').eq(col).addClass('filtered').text().search(new RegExp(query, "i")) < 0) ? $(this).hide().removeClass('visible filtered').find('td').removeClass('filtered') : $(this).show().addClass('visible');
        });
    },
    
    /**
     * filterable table
     */
    filterable: function(el,th,tr,id) {
        var filter = {};
        var length = th.length;
        //read columns for filter links
        tr.each(function(){
            for(i=0;i<length;i++){
                if(!filter[i]) filter[i] = {};
                var term = $.trim($(this).find('td').eq(i).text()); 
                filter[i][term] = term;
            }
        });
        //look if filter is only for some cols
        if($.isArray(dhl_config.tables[id]['filter'])) {
            var colFilter = {};
            $.each(dhl_config.tables[id]['filter'],function(k,v) {
                colFilter[v-1] = filter[v-1]; 
            })
            filter = colFilter;
        }
        //create filter links
        $.each(filter, function(k,v) {
            var links = '';
            $.each(v,function(kk,vv) {
                links += '<a href="#" title="' + vv + '">' + vv + '</a>';
            });
            //filter col
            th.eq(k).addClass('filterable').find('div.cl').append('<div class="hd links">' + links + '</div>').find('div a').click(function(e) {
                e.preventDefault();
                e.stopPropagation();
                var el = $(this);
                dhl.richtext.filterCol(tr,el.text(),k);
                //close col filter container
                el.closest('th').find('a.filter').trigger('click');
            });
            //append filter toggle link to col
            th.eq(k).find('div.cl').append('<a href="#" title="' + dhl.richtext.lang.filtershow + '" class="filter closed"></a>');
        });
        //toggle filter links
        th.find('a.filter').click(function(e){
            e.preventDefault();
            e.stopPropagation();
            var el = $(this); 
            if(el.hasClass('closed')) {
                 el.removeClass('closed').addClass('opened');
                 el.closest('th').find('div.links').removeClass('hd');   
            } else {
                 el.removeClass('opened').addClass('closed'); 
                 el.closest('th').find('.links').addClass('hd');   
            }
        });
    }, 
    
    /**
     * searchable table
     */
    searchable: function(el,th,tr,id) {
        el.closest('.table').find('p.filter label,p.filter input').removeClass('hd');
        //filter search input
        $('#search_' + id).keyup(function(e){
            //reset
            if (e.keyCode == 27 || $(this).val() == '') {
			    $(this).val('');
                tr.removeClass('visible filtered').show().addClass('visible').find('td').removeClass('filtered');
            }
            //search
		    else {
                dhl.richtext.filterAll(tr, $(this).val());
            }
        }).focus(function() {
            $(this).val('');
            tr.removeClass('visible filtered').show().addClass('visible').find('td').removeClass('filtered');
        });
    },   
    
    /**
     * sortable table
     */
    sortable: function(el,th,tr,id) {
        tr.addClass('visible');
        th.each(function(column) {
            $(this).addClass('sortable').find('div.cl').append('<a href="#" class="sort"  title="' + dhl.richtext.lang.sort + '"></a>').find('.sort').click(function(e){
                e.preventDefault();
                e.stopPropagation();
                var findSortKey = function(cell) {
    				return cell.find('.sort-key').text().toUpperCase() + ' ' + cell.text().toUpperCase();
    			};
    			var thisTh = $(this).closest('th');
    			//check direction
    			var sortDirection = thisTh.is('.sorted-asc') ? -1 : 1;
    			var rows = thisTh.closest('table').find('tbody tr').get();
    			//loop through all the rows and find 
    			$.each(rows, function(index, row) {
    				row.sortKey = findSortKey($(row).children('td').eq(column));
    			});
    			//compare and sort the rows alphabetically
    			rows.sort(function(a, b) {
    				if (a.sortKey < b.sortKey) return -sortDirection;
    				if (a.sortKey > b.sortKey) return sortDirection;
    				return 0;
    			});	
    			//add the rows in the correct order to the bottom of the table
    			$.each(rows, function(index, row) {
    				el.find('tbody').append(row);
    				row.sortKey = null;
    			});
    			//identify the column sort order
    			el.find('th').removeClass('sorted-asc sorted-desc');
    			var sortHead = el.find('th').filter(':nth-child(' + (column + 1) + ')');
    			sortDirection == 1 ? sortHead.addClass('sorted-asc') : sortHead.addClass('sorted-desc');
    			//identify the column to be sorted by
    			el.find('td').removeClass('sorted').filter(':nth-child(' + (column + 1) + ')').addClass('sorted');
    		});
       });
    },
    
    /**
     * create test data
     */
    dummy: function() {
        //conf
        if(!dhl_config.tables) {
            dhl_config.tables = {};
            dhl_config.tables['tableId1'] = {
                'search': 'true'
            };
            dhl_config.tables['tableId2'] = {
                'filter': [1,3],
                'sort': 'true'            
            };
        }
        //lang
        dhl.richtext.lang.filterreset = 'reset filter';
        dhl.richtext.lang.filtersearch = 'search table';
        dhl.richtext.lang.filtershow = 'filter column';
        dhl.richtext.lang.sort = 'sort column';
        //dom
        $('.richtext').addClass('table');
        $('.richtext').eq(0).attr('id','tableId1');
        $('.richtext').eq(1).attr('id','tableId2');
        
    }
}

/**
 * component: expandablearea
 */

$(document).ready(function() {
    dhl.expandablearea.init();
    dhl.eventlist.multicall.expandablearea = dhl.expandablearea.init;
});

dhl.expandablearea = {
    
    /**
     * initialize component
     */
    init: function() {
        dhl.expandablearea.toggle();
        dhl.expandablearea.anchor();
        // track this if a FAQ 
        if($('#content-wrapper .expandablearea .track').length > 0) {
            dhl.expandablearea.trackThis = true;
        }
    },

    /**
     * toogles the expandable list
     */
    toggle: function(){
        //get components
        var areas = $('#content-wrapper .expandablearea div.area-status');
       
        
        // check if paragraph system should be closed
        areas.each(function() {
            var current = $(this);
            if (current.hasClass('closed')) {
                current.children('div.expandable').hide().addClass('hd').css('display','block');
            }
        });

        // add indentation
        areas.children('div.expandable').css('padding-left', '1.6em');
        
        //inject link inside area title
        /**
        if (areas.children('h2').children('a').length == 0) {
        console.log('link');
            areas.children('h2').wrapInner("<a href='#'></a>");
        }
        **/
        
        
        //inject link inside area title
        areas.children('h2').each(function(i,e){
            if($(this).children('a').length == 0) {
                $(this).wrapInner("<a href='#'></a>");
            }
        });




        //click listener
        areas.children('h2').children('a').unbind('click').click(function() {
            var area = $(this).parents('div').eq(0);
            var current = area.children('div.expandable');
            if (current.hasClass('hd')) {
                current.css('display','none').removeClass('hd');
            }
            current.slideToggle('fast',function(){
                area.toggleClass('closed');
                if (area.hasClass('closed')) {
                    current.addClass('hd').css('display','block');
                }
            });
            // omniture tracking
            if(dhl.expandablearea.trackThis) {
                dhl.expandablearea.track($(this));
            }
            return false;
        });
    },
    
    /**
    * track clicked links in FAQ
    */
    track: function(link) {
        if(link.parent().parent('.area-status').hasClass('closed')) {
            dhl_config.omniture.options.prop25 = normalize(link.text());
            dhl_config.omniture.options.prop26 = normalize($('#content-wrapper .expandablearea .track').eq(0).text());
            dhl_config.omniture.writeOut();
        }
    },
    
    /**
    * check if an anchor in url - open expandable area - jump to anchor - use standart cq anchors
    */
    anchor: function() {
        var url = window.location.href;
        if(url.indexOf('#') != -1) {
            var anchorname = url.split('#')[1]; //read anchor from url
            if(anchorname != '') {
                var anchorelements = $('#content .expandablearea a.jumptarget'); //find cq anchors in doc
                anchorelements.each(function(index, domElement) {
                    if(domElement.name.indexOf(anchorname) != -1) {
                        var area = $(domElement).closest(".expandablearea").find('.closed');
                        if(area.length > 0) {
                            area.find('h2.area-title a').trigger('click'); //open area
                        }
                        window.scrollTo(0, $(domElement)[0].offsetTop); //jump to anchor
                    }
                });
            }
        }
    }
}

/**
 * component: linklist
 */

$(document).ready(function() {
	dhl.expandablelinklist.init();
	dhl.eventlist.multicall.expandablelinklist = dhl.expandablelinklist.init;
});

dhl.expandablelinklist = {
	
	/**
	 * initialize component
	 */
	init: function() {
		dhl.expandablelinklist.toggle();
	},

	/**
	 * toogles the expandable list
	 */
	toggle: function(){
		var list = $('#content-wrapper .expandablelinklist li:has(h3)');
		
		//closes list elements @ init
		list.each(function() {
			var current = $(this);
			if (current.hasClass('closed')) {
				current.children().children('ul').hide();
			}
		});
		
		//click listener
		list.children('h3').children('a').click(function(){
			var current = $(this);
			current.parent().parent().children('div.linklistitem').children('ul').slideToggle('fast',function(){
				current.parent().parent().toggleClass('closed');
			});
			return false;
		});
	}
}

/**
 * component: tabs 
 */

$(document).ready(function() {
	dhl.tabs.init();
	dhl.eventlist.multicall.tabs = dhl.tabs.init;
});

dhl.tabs = {
	
	/**
	 * initialize component
	 */
	init: function() {
		dhl.tabs.create();

		// only relevant for author mode
		dhl.tabs.checkTabCookie();

		if ($.browser.safari) {
			dhl.tabs.style();
		}
	},
	
	/**
	 * create tabs from html
	 */
	create: function() {
		$('#content-wrapper .tabs').each(function() {
			var tab = $(this);
			if (tab.children('.colored').length > 0) {
				tab = tab.children('.colored');
			}
			var ul = tab.find('ul:first');
			var ul_id = ul.attr('id'); //get id
			var active_tab = 0;

			var settings;
			// set active tab and determine settings
			if(dhl_config.tabs) {
				for(var i in dhl_config.tabs) {
					if(i == ul_id) {
						active_tab = dhl_config.tabs[i].active;
					}
				}

				// only relevant for author mode
				var author = dhl.tabs.getTabCookie(ul_id); 
				if (author) {
					if (author.active_tab) {
						active_tab = author.active_tab;
					}
					settings = author.settings;
				}
			}

			// create tabs
			tab.tabs(active_tab, settings);
			// navigation ?
			var width = 0;
			var elements = ul.children('li');
			var componentwidth = tab.width();
			if(tab.hasClass('colored')) componentwidth = tab.parent().width(); // IE fix
			// get width
			elements.each(function() {
				width += $(this).width();
			});
			
			// too big ?
			if(width > componentwidth) {
				// show navigation links and set listener 
				tab.append('<a href="#" class="inv tableft tabnavigation"></a><a href="#" class="inv tabright tabnavigation"></a>');
				var tabnavi = tab.find('a.tabnavigation');
				var ul = elements.parent();
				var n = 50;
				var current = 0;
				// move tabs left or right
				tabnavi.removeClass('inv').click(function(e) {
					e.preventDefault();
					if($(this).hasClass('tableft')) {
						if(current == 0) return false;
						current = current + n;
					} else {
						if((componentwidth - 60 - width) > current) {
							return false;
						}
						current = current - n;
					}
					ul.css('margin-left',current + 'px');
				});
				// inject dom to wrap
				elements.parent().wrap('<div class="tabs-nav-wrap"></div>');
			}
			else {
				ul.wrap('<div class="tabs-nav-wrapp"></div>');
			}
			 //needed for ie
			tab.css('overflow','visible');
			tab.find(".tabs-container:not(.tabs-hide)").hide().show();
		});
	},

	/**
	 * set additional styles on tabs
	 */
	style: function() {
		$('#content-wrapper .tabs ul .tabs-selected a').css('top', '2px');
	},

	/**
	 * Empty implementation (will be extended in author mode)
	 */
	checkTabCookie: function(){
	},

	/**
	 * Empty implementation (will be extended in author mode)
	 */
	getTabCookie: function(){
	}
}


/**
 * component: form
 */

$(document).ready(function() {
	dhl.form.init();
	dhl.eventlist.multicall.form = dhl.form.init;
});

dhl.form = {

	/**
	 * define language strings
	 */
	lang : {
		required : "Please fill out this field.",
		email : "Please enter a valid email address.",
		url : "Please enter a valid URL.",
		lettersonly : "Please insert letters only.",
		phonenumber : "Not a valid phone number. Please use only digits, space and '( ) / - _ +'.",
		digits : "Please enter numbers only.",
		radio : "Please choose an option.",
		select : "Please select an entry.",
		checkbox : "Please choose an option.",
		error : "Please check the following mandatory field or missing or invalid input:",
		errors : "Please check the following mandatory fields or missing or invalid input:",
		errorprefix : "Error: ",
		captcharefresh : "Generate new image",
		maxlength : "ui.form.validation.maxlength"
	},

	/**
	 * initialize component
	 */
	init : function() {
		dhl.form.validate();
		dhl.form.prefill();
		dhl.form.mail2meToggle();
		dhl.form.emailafriend();
		dhl.form.prefillFromParameter();
		dhl.form.expandableElementsAreaEvents();
	},

	/**
	 * validate a form
	 */
	validate : function() {

		$.extend($.validator, { // set default messages
			messages : {
				required : dhl.form.lang.required,
				email : dhl.form.lang.email,
				url : dhl.form.lang.url,
				digits : dhl.form.lang.digits,
				maxlength : dhl.form.lang.maxlength
			}
		});

		// additional validator - more in
		// svn/dhlde-docs/development/js-frameworks/jQuery_1.3.2/jquery.validate/additional-methods.js
		$.validator.addMethod("lettersonly", function(value, element) {
			return this.optional(element) || /^[a-z]+$/i.test(value);
		}, dhl.form.lang.lettersonly);
		$.validator.addMethod("phonenumber", function(value, element) {
			return this.optional(element)
					|| /^[\d\_\-\+\s\(\)\/]+$/.test(value);
		}, dhl.form.lang.phonenumber);

		$(".form form")
				.each(
						function(i, el) { // validate each form on the page
							// if(!dhl_config.form) return;
							var current = $(el); // current form
							current.find(':reset').click(function() { // reset
								// button
								// clear
								// error
								// messages
								try {
									dhl.form.clear(current);
									if (current && current.length > 0) {
										current[0].reset(); // clear form fields
									}
									dhl.form.checkExpandableElementsAreasForClose();
								} catch(ex) {
									/* nothing */
								}
							});
							// click listener for capture reload
							if (dhl_config.form.captcha) {
								dhl.form.captcha(current);
							}
							// read custom rules and messages for the current
							// form
							if (dhl_config.form.validate) {
								for ( var i in dhl_config.form.validate) {
									if (i == current.attr('id')) {
										var validation_cfg = dhl_config.form.validate[i];
										dhl.form.listen(validation_cfg, i);
									}
								}
							}
							current
									.validate({ // http://docs.jquery.com/Plugins/Validation/validate#options
										// debug: true, //debugger on
										onkeyup : false,
										onclick : false,
										onfocusout : false, // disable
										// eventlisteners
										focusInvalid : false, // disable auto
										// focus on
										// first error
										rules : (validation_cfg) ? validation_cfg.rules
												: {}, // set custom rules
										messages : (validation_cfg) ? validation_cfg.messages
												: {}, // set custom messages

										showErrors : function(errorMap,
												errorList) { // custom error
											// handler
											dhl.form.clear(current); // delete
											// old
											// error
											// messages
											dhl.form.create(current,
													errorList.length); // create
											// errorbox
											// above
											// form
											// for
											// new
											// errors

											$
													.each(
															errorList,
															function(index,
																	value) { // create
																// new
																// errors
																// and
																// inject
																// them
																// 2
																// dom

																var label;
																var labels = current
																		.find('label');
																for ( var i = 0; i < labels.length; i++) {
																	// sanity
																	// check for
																	// forms in
																	// subpagedropdown
																	// scenario
																	if ($(
																			labels[i])
																			.attr(
																					'for') == value.element.id) {
																		label = $(labels[i]);
																	}
																}
																label
																		.addClass('error');

																var msg_is_set = new Array;
																if (validation_cfg) { // check
																	// if
																	// custom
																	// message
																	// set
																	// for
																	// select
																	// /
																	// radio
																	// /
																	// checkbox
																	for ( var i in validation_cfg.messages) {
																		if (i == value.element.name) {
																			msg_is_set
																					.push(value.element.name);
																		}
																	}
																}
																if ($
																		.inArray(
																				value.element.name,
																				msg_is_set) == '-1') {
																	switch (value.element.type) {
																	case 'radio':
																		value.message = dhl.form.lang.radio;
																		break;
																	case 'checkbox':
																		value.message = dhl.form.lang.checkbox;
																		break;
																	case 'select-one':
																		value.message = dhl.form.lang.select;
																		break;
																	}
																}

																label
																		.append('<span class="error hd"> - '
																				+ value.message
																				+ '</span>');
																var cloned = label
																		.clone();
																cloned
																		.children(
																				'a')
																		.remove()
																cloned
																		.children(
																				'span.error')
																		.removeClass(
																				'hd');
																cloned
																		.children(
																				'span.hd')
																		.remove();
																cloned
																		.appendTo(
																				current
																						.find('div.errorbox ul.error'))
																		.wrap(
																				'<li></li>');
																label
																		.prepend('<span class="error">'
																				+ dhl.form.lang.errorprefix
																				+ '</span>');

																if (value.element.type == 'radio') { // required
																	// radio
																	// buttons
																	var radio = $(value.element);
																	radio
																			.parent(
																					'p')
																			.children(
																					'label.error')
																			.removeClass(
																					'error')
																			.children(
																					'span.error')
																			.remove(); // remove
																	// default
																	// error
																	// handling
																	radio
																			.parent(
																					'p')
																			.before(
																					'<h4 class="error"><span class="error">'
																							+ dhl.form.lang.errorprefix
																							+ '</span>'
																							+ radio
																									.parent(
																											'p')
																									.prev(
																											'h4')
																									.html()
																							+ '</h4>'); // create
																	// new
																	// error
																	// (IE)
																	radio
																			.parent(
																					'p')
																			.prev(
																					'h4')
																			.prev(
																					'h4')
																			.remove(); // remove
																	// old
																	// error
																	// (IE)
																}
															});

											var anchor = current
													.find('div.errorbox p.error a');
											if (anchor) {
												anchor.focus(); // focus on an
												// anchor above
												// the error
												// list
											}
										},

										submitHandler : function(form) {
											dhl.form.setStoreValues(form);
											form.submit();
										}
									});
						});
	},

	/**
	 * create the errorbox above the form
	 * 
	 * @param jquery
	 *            object - current form
	 */
	create : function(current, length) {
		if (length == 0) {
			return false; // prevent creation of error container if no errors
		}
		var message = length > 1 // check for singular
		? dhl.form.lang.errors : dhl.form.lang.error;
		var msgbox = '<div class="errorbox">'; // the errorbox
		msgbox += '<p class="error"><a href="#" name="error"></a>' + message
				+ '</p>';
		msgbox += '<ul class="error"></ul>';
		msgbox += '</div>';
		current.prepend(msgbox); // add 2 form
	},

	/**
	 * remove error messages
	 * 
	 * @param jquery
	 *            object - current form
	 */
	clear : function(current) {
		current.find('div.errorbox').remove(); // cleanup error list
		current.find('label.error').removeClass('error').find('span.error')
				.remove(); // cleanup labels
		current.find('h4.error').removeClass('error').find('span.error')
				.remove(); // cleanup radio group headlines
	},

	/**
	 * reload captcha img
	 * 
	 * @param jquery
	 *            object - current form
	 */
	captcha : function(current) {
		var captcha = current.find('p.captcha');

		if (captcha.length > 0) {
			// remove fallback submit button
			captcha.find('.submit').remove();

			// generate refresh link
			// deactivate because: in CQ5.3 the linkchecker set this JS append
			// link as invalid
			// captcha.append('<a class="refresh" href="' +
			// dhl_config.form.captcha.refresh + '">' +
			// dhl.form.lang.captcharefresh + '</a>');

			// add click listener to refresh link
			captcha.find('a.refresh').click(
					function(e) {
						e.preventDefault();
						var captchakey = ("" + Math.random()).substring(3, 8);

						var captchaimg = $(this).parent('p').find('img');
						captchaimg.attr('src', dhl_config.form.captcha.url
								+ '?id=' + captchakey);

						var captchakeyelem = $(this).parent('p').find(
								'input[type=hidden]');
						captchakeyelem.attr('value', captchakey);
					}).trigger('click'); // prevent cached image
		}
	},

	/**
	 * retrieve all stored values from a cookie
	 */
	prefill : function() {
		$(".form form").each(function() {
			var form = $(this);
			var storedValues = dhl.form.getStoreValues();

			if (storedValues) {
				var field;
				for ( var i in storedValues) {
					field = form.find('[name=' + i + ']');

					// write only values for stored fields because there are
					// problems with
					// base64 encoding an unique element names between input and
					// textareas
					var type = field.attr('type');
					switch (type) {
					case 'file':
					case 'radio':
					case 'button':
					case 'submit':
					case 'hidden':
					case 'password':
					case 'textarea':
					case 'reset':
						break;
					case 'checkbox':
						if (field.val() == storedValues[i]) {
							field.attr('checked','checked');
						}
						break;
					default:
						field.val(storedValues[i]);
					}

				}
			}
		});
	},

	/**
	 * cookie store settings expiration date will not be set, it defaults to
	 * current session
	 */
	storeSettings : {
		name : 'dhlde_formstore',
		path : '/',
		separator : '###',
		splitter : '*'
	},

	/**
	 * retrieve all stored values from a cookie
	 * 
	 * @param form -
	 *            current form object
	 */
	getStoreValues : function(undecode) {
		var storedValues = null;
		var cookie = $.cookie(dhl.form.storeSettings.name);

		if (cookie) {
			var pairs = cookie.split(dhl.form.storeSettings.separator);

			for ( var i = 0; i < pairs.length; i++) {
				// var pair = pairs[i].split("=");
				var pair = pairs[i].split(dhl.form.storeSettings.splitter);

				if (!storedValues) {
					storedValues = {};
				}
				if (undecode)
					storedValues[pair[0]] = pair[1];
				else
					storedValues[pair[0]] = Base64.decode(pair[1]);
			}
		}

		return storedValues;
	},

	/**
	 * retrieve all values in the form and store them in a cookie
	 * 
	 * @param form -
	 *            current form object
	 */
	setStoreValues : function(form) {
		var fm = $(form);

		// store for new values
		var newValues = {};
		// store for empty values
		var emptyValues = {};

		// get form fields and iterate through them
		var fields = fm.find(':input');
		fields.each(function() {
			var field = $(this);

			var type = field.attr('type');
			switch (type) {
			case 'file':
			case 'button':
			case 'submit':
			case 'radio':
			case 'hidden':
			case 'password':
			case 'textarea':
			case 'reset':
				break;
			case 'checkbox':
				var val = field.val();
				if (field.attr('checked')) {
					newValues[field.attr('name')] = Base64.encode(val);
				} else {
					emptyValues[field.attr('name')] = '';
				}
				break;
			default:
				var val = field.val();
				if (val && val != '') {
					// store new values
					if (field.attr('name').indexOf('captcha') == -1) { // weak
						// captcha
						// field
						// check
						// newValues[field.attr('name')] = val;
						newValues[field.attr('name')] = Base64.encode(val);
					}
				}
				// store empty values to delete from cookie
				else {
					if (field.attr('name').indexOf('captcha') == -1) {
						emptyValues[field.attr('name')] = '';
					}
				}
			}
		});

		// get undecoded stored values from cookie
		var storedValues = dhl.form.getStoreValues(true);

		// delete empty values from cookie
		if (storedValues) {
			$.each(emptyValues, function(i, el) {
				delete storedValues[i];
			});
		}

		// merge values
		if (storedValues) {
			storedValues = $.extend(storedValues, newValues);
		} else {
			storedValues = newValues;
		}

		// array -> string
		cookie = '';
		for ( var j in storedValues) {
			// cookie += j + '=' + storedValues[j] +
			// dhl.form.storeSettings.separator;
			cookie += j + dhl.form.storeSettings.splitter + storedValues[j]
					+ dhl.form.storeSettings.separator;
		}

		// remove last separator
		cookie = cookie.substring(0, cookie.length
				- dhl.form.storeSettings.separator.length);

		// set cookie
		$.cookie(dhl.form.storeSettings.name, cookie, {
			path : dhl.form.storeSettings.path
		});
	},

	/**
	 * hide and display mail2me form elements
	 */
	mail2meToggle : function() {
		if ($('.form form .mail2me').length > 0) {
			// init close
			if ($('.form form .mail2me :checkbox').attr('checked') == false) {
				$('.form form .mail2me .mail2mebox').slideUp('fast');
			}
			// toggle
			$('.form form .mail2me :checkbox').click(
					function(el) {
						if ($(this).attr('checked') == true) {
							$(this).closest('.mail2me').find('.mail2mebox')
									.slideDown('slow');
							$(this).closest('.mail2me').find('a.refresh')
									.trigger('click');
						} else {
							$(this).closest('.mail2me').find('.mail2mebox')
									.slideUp('fast');
						}
					});
		}
	},

	/**
	 * listen on depend required fields and add a mandatory *
	 */
	listen : function(fields, form) {
		$.each(fields, function(i, el) {
			if (i == "listener") {
				$.each(el, function(element, val) {
					$.each(val, function(elementName, typeValue) {

						var listendEl = $('#' + form + ' #' + element);
						var requiredEl = $('#' + form + ' #' + elementName);

						switch (typeValue.type) {
						case "checkbox":
							(this.checked) ? dhl.form.setMandatory(requiredEl)
									: dhl.form.deleteMandatory(requiredEl);
							listendEl.click(function(ev) {
								(this.checked) ? dhl.form
										.setMandatory(requiredEl) : dhl.form
										.deleteMandatory(requiredEl);
							});
							break;
						case "text":
							(this.value !== "") ? dhl.form
									.setMandatory(requiredEl) : dhl.form
									.deleteMandatory(requiredEl);
							listendEl.blur(function(ev) {
								(this.value !== "") ? dhl.form
										.setMandatory(requiredEl) : dhl.form
										.deleteMandatory(requiredEl);
							});
							break;
						}
					});
				});
			}
		});
	},

	/**
	 * set *
	 */
	setMandatory : function(requiredEl) {
		requiredEl.closest('p').find('label .mandatory').remove();
		requiredEl
				.closest('p')
				.find('label')
				.append(
						'<span class="mandatory"><span class="hd">Mandatory field</span> *</span>');
	},

	/**
	 * delete *
	 */
	deleteMandatory : function(requiredEl) {
		requiredEl.closest('p').find('label .mandatory').remove();
	},

	/**
	 * hides page-title-area if emailafriend
	 */
	emailafriend : function() {
		if ($('#content .form input[value=emailafriend]').length > 0) {
			$('#page-title-area').css('display', 'none');
			$('#content').css('padding-top', '2em');
		}
	},

	/**
	 * Initiates the formelement-prefill by GET-Parameters.
	 */
	prefillFromParameter : function() {
		if (dhl_config.form && dhl_config.form.parameterPrefillData) {
			var requestUri = window.location.href;
			if (requestUri.indexOf('.cache.') > 0) {
				var parameterMap = dhl.form.getParameterMap();
				if (parameterMap) {
					$.each(parameterMap, function(parameterName, parameterValue) {
						if (dhl_config.form.parameterPrefillData[parameterName] != undefined) {
							var elementData = dhl_config.form.parameterPrefillData[parameterName];
							if (elementData) {
								elementData['fieldValue'] = parameterValue;
								dhl.form.setParameterDataForElement(elementData);
							}
						}
					});
				}
			}
		}
	},

	/**
	 * Occupy formelements with GET-Parametervalues dependent by the formelement-type.
	 */
	setParameterDataForElement : function(elementData) {
		if (elementData) {
			var fieldType = elementData['fieldType'];
			var fieldValue = unescape(elementData['fieldValue']);
			var fieldName = elementData['fieldName'];
			switch (fieldType) {
			case "text":
			case "textarea":
			case "hidden":
				$('#' + fieldName).val(fieldValue);
				break;
			case "dropdown":
				var opts = $('#' + fieldName).attr("options");
				$.each(opts, function(i, opt) {
					if ($(opt).val() == fieldValue) {
						$(opt).attr("selected", "selected");
					}
				});
				break;
			case "radio":
				var radio = $('input[name=' + fieldName + ']:radio');
				$.each(radio, function(i, elem) {
					if ($(elem).val() == fieldValue) {
						$(elem).attr("checked", "checked");
					}
				});
				break;
			case "checkbox":
				if ($('#' + fieldName).val() == fieldValue) {
					$('#' + fieldName).attr("checked", true);
				}
				break;
			}
		}
	},

	/**
	 * Returns an object(Map) which contains all GET-Parameters as KEY:VALUE-pairs.
	 */
	getParameterMap : function() {
		var queryString = unescape(window.location.search.substr(1));
		if (queryString != '') {
			var keyValuePairs = queryString.split('&');
			if (keyValuePairs) {
				var parameterMap = {};
				$
						.each(
								keyValuePairs,
								function(i, pair) {
									var keyValuePair = pair.split('=');
									if (keyValuePair) {
										parameterMap[keyValuePair[0]] = escape(keyValuePair[1]);
									}
								});
				return parameterMap;
			}
		}
	},

	/**
	 * Binds a change-event to the 'ExpandableElementsArea'-Checkbox to toggle
	 * the visibilty of all containing formelements.
	 */
	expandableElementsAreaEvents : function() {
		// check whether paragraph system should be closed
		dhl.form.checkExpandableElementsAreasForClose();
		
		// get components
		var areas = $('#content-wrapper .expandableelementsarea div.area-status');
		
		// add indentation
        areas.children('div.expandable').css('padding-left', '1.6em');

		var elements = $('.eeaCheckBox');
		elements.each(function() {
			var currentElement = $(this);
			currentElement.bind('change', function() {
				var area = $(currentElement).parents(
						'div.expandableelementsarea').children(
						'div.area-status');
				dhl.form.expandableElementsAreaToggle(area);
			});
			currentElement.bind('click', function() {
				this.blur();
				this.focus();
			});
		});
	},

	/**
	 * Toggles the visibility of the containing formelements of the 'ExpandableElementsArea'.
	 */
	expandableElementsAreaToggle : function(area) {
		// click listener
		var current = area.children('div.expandable');
		if (current.hasClass('hd')) {
			current.css('display', 'none').removeClass('hd');
		}
		current.slideToggle('fast', function() {
			area.toggleClass('closed');
			if (area.hasClass('closed')) {
				current.addClass('hd').css('display', 'block');
			}
		});
	},
	
	/**
	 * Checks whether the containing formelements of the 'ExpandableElementsArea'
	 * are visible on pageload or not.
	 */
	checkExpandableElementsAreasForClose: function() {
		// get components
		var areas = $('#content-wrapper .expandableelementsarea div.area-status');
		
		// check if paragraph system should be closed
		areas.each(function() {
			var current = $(this);
			var eeaCheckBox = current.parents('.expandableelementsarea').children().children('.eeaCheckBox');
			if (eeaCheckBox && eeaCheckBox.attr('checked')) {
				current.removeClass('closed');
			} else if (eeaCheckBox && !eeaCheckBox.attr('checked') && !current.hasClass('closed')) {
				current.addClass('closed');
			}
			if (current.hasClass('closed')) {
				current.children('div.expandable').hide().addClass('hd').css(
						'display', 'block');
			}
		});
	}
}

var Base64 = {

	// private property
	_keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",

	// public method for encoding
	encode : function(input) {
		var output = '';
		var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
		var i = 0;
		input = Base64._utf8_encode(input);
		while (i < input.length) {
			chr1 = input.charCodeAt(i++);
			chr2 = input.charCodeAt(i++);
			chr3 = input.charCodeAt(i++);
			enc1 = chr1 >> 2;
			enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
			enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
			enc4 = chr3 & 63;
			if (isNaN(chr2)) {
				enc3 = enc4 = 64;
			} else if (isNaN(chr3)) {
				enc4 = 64;
			}
			output = output + this._keyStr.charAt(enc1)
					+ this._keyStr.charAt(enc2) + this._keyStr.charAt(enc3)
					+ this._keyStr.charAt(enc4);
		}
		return output;
	},

	// public method for decoding
	decode : function(input) {
		var output = '';
		var chr1, chr2, chr3;
		var enc1, enc2, enc3, enc4;
		var i = 0;

		input = input.replace(/[^A-Za-z0-9\+\/\=]/g, '');

		while (i < input.length) {

			enc1 = this._keyStr.indexOf(input.charAt(i++));
			enc2 = this._keyStr.indexOf(input.charAt(i++));
			enc3 = this._keyStr.indexOf(input.charAt(i++));
			enc4 = this._keyStr.indexOf(input.charAt(i++));

			chr1 = (enc1 << 2) | (enc2 >> 4);
			chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
			chr3 = ((enc3 & 3) << 6) | enc4;

			output = output + String.fromCharCode(chr1);

			if (enc3 != 64) {
				output = output + String.fromCharCode(chr2);
			}
			if (enc4 != 64) {
				output = output + String.fromCharCode(chr3);
			}

		}

		output = Base64._utf8_decode(output);

		return output;

	},

	// private method for UTF-8 encoding
	_utf8_encode : function(string) {
		string = string.replace(/\\r\\n/g, '\\n');
		var utftext = '';
		for ( var n = 0; n < string.length; n++) {
			var c = string.charCodeAt(n);
			if (c < 128) {
				utftext += String.fromCharCode(c);
			} else if ((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			} else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}
		}
		return utftext;
	},

	// private method for UTF-8 decoding
	_utf8_decode : function(utftext) {
		var string = '';
		var i = 0;
		var c = c1 = c2 = 0;

		while (i < utftext.length) {

			c = utftext.charCodeAt(i);

			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			} else if ((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i + 1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			} else {
				c2 = utftext.charCodeAt(i + 1);
				c3 = utftext.charCodeAt(i + 2);
				string += String.fromCharCode(((c & 15) << 12)
						| ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}

		}

		return string;
	}
}
/**
 * component: link-dropdown
 */

$(document).ready(function() {
	dhl.link_dropdown.init();
	dhl.eventlist.multicall.link_dropdown = dhl.link_dropdown.init;
});

dhl.link_dropdown = {
	
	/**
	 * initialize component
	 */
	init: function() {
		dhl.link_dropdown.setWidth();
		dhl.link_dropdown.openExternalLinks();
	},

	/**
	 * open external links in a popup
	 */
	openExternalLinks: function() {
		$('#content-wrapper .link-dropdown form').submit(function(){
			var select = $(this).find('select');
			var external = $(this).find('option:selected');
			if (external.hasClass('external')) {
				dhl.links.open($(this).attr('action') + '?' + select.attr('name') + '=' + external.val(), null);
				return false;
			}
		});
	},

	/**
	 * set width of select boxes in dependancy of button and container width
	 */
	setWidth: function() {
		$('#content-wrapper .link-dropdown form select').each(function(){
			// get element
			var el = $(this);
			// reset default width
			el.css('max-width', 'none');

			// set buffer
			var buffer = 1;

			// IE6/7: reset predefined width for correct calculation and hide select temporarily
			if($.browser.msie && $.browser.version < 8) {
				buffer = 3;
				el.css({
					'position': 'absolute',
					'visibility': 'hidden',
					'width': 'auto'
				});
			}

			// get button and container
			var button = el.next();
			var parent = el.parents('.link-dropdown').eq(0);
			var maxWidth = parent.width() - button.outerWidth(true);

			// set width if it is bigger than max possible width
			if(el.outerWidth(true) > maxWidth) {
				el.width(maxWidth - buffer);
			} 

			// IE6/7: reset visibility
			if($.browser.msie && $.browser.version < 8) {
				el.css({
					'position': 'static',
					'visibility': 'visible'
				});
			}
		});
	}
}

/**
 * component: subpagedropdown
 */

$(document).ready(function() {
    dhl.subpagedropdown.init();
    dhl.eventlist.multicall.subpagedropdown = dhl.subpagedropdown.init;
});

dhl.subpagedropdown = {
		
	gkp: {
		tokenIDParamName: 'tokenID',
		tokenIDValue: ''
	},

    /**
	 * define language strings
	 */
    lang: {
        loading: "Loading contents..."
    },

    /**
	 * initialize component
	 */
    init: function() {
        dhl.subpagedropdown.setWidth();
        dhl.subpagedropdown.addListener();
        dhl.subpagedropdown.retrieveTokenId();       
    },
    
    /**
	 * init qgo dynamic faq
	 */
    initQgo: function() {
         dhl.subpagedropdown.checkDynamicFAQ();
         dhl.subpagedropdown.askQgo();
    },
    
    /**
	 * cookie store settings expiration date will not be set, it defaults to
	 * current session
	 */
     storeSettings: {
         name: 'omnitureTopics',
         separator: '###',
         splitter: '*'
     },

    /**
	 * add onchange listener to select
	 */
    addListener: function(){
        $('#content-wrapper .subpagedropdown').children('form').find('select').unbind('change').change(function() {
            dhl.subpagedropdown.changeSubPage(this);
        });
        $('#content-wrapper .subpagedropdown').children('form').unbind('submit').submit(function(e) {
            e.preventDefault();
            dhl.subpagedropdown.changeSubPage($(this).find('select'));
        });
    },
    
    /**
	 * sets the GKP-TokenID for prefill form
	 */
    retrieveTokenId: function() {
    	var match = RegExp('[?&]' + dhl.subpagedropdown.gkp.tokenIDParamName + '=([^&]*)').exec(window.location.search);
    	if (match) {
    		dhl.subpagedropdown.gkp.tokenIDValue = decodeURIComponent(match[1].replace(/\+/g, ' '));
    	}
    },

    /**
	 * onchange action
	 */
    changeSubPage: function(select) {
        // worker object to store infos for further processing
        var worker = {
            // get select field value
            value: $(select)[0].value,

            // get current container
            container: $(select).parents('.subpagedropdown').eq(0),
            
            // get selected option text
            text: $(select)[0].options[$(select)[0].selectedIndex].text
        };

        // hide all sub pages
        dhl.subpagedropdown.hideSubPages(worker.container);

        if (dhl_config.subpagedropdown && worker.value != '') {
            // appropriate config for select
            var subpageConfig = dhl_config.subpagedropdown[$(select).attr('id')];

            // get id to given value (url) and add to worker object
            for (var i in subpageConfig) {
                if (subpageConfig[i] == worker.value) {
                    worker.id = i;
                }
            }

            // show chosen sub page
            dhl.subpagedropdown.showSubPage(worker);
        }

        // set width of inner select fields
        dhl.subpagedropdown.setWidth(worker.container);
        
        
        
        
        // write selected option text
        if(dhl_config.isContactFormPage) {
            
            // read cookie - check
            var cookieVal = $.cookie(dhl.subpagedropdown.storeSettings.name);
            var cookieNewVal = '';
            var id = $(select).attr('id');
            var restart = false;
            var selectedItem = worker.text;
            
            // go through old cookie value and build new cookie value
            if (cookieVal){
                var pairs = cookieVal.split(dhl.subpagedropdown.storeSettings.separator);

                for (var i = 0; i < pairs.length; i++) {
                    
                    // var pair = pairs[i].split("=");
                    var pair = pairs[i].split(dhl.subpagedropdown.storeSettings.splitter);

                    if(pair[0]!=null && pair[0].length!=0){
                        if (pair[0] == id){
                            // id already used --> cookie must be rewritten
                            cookieNewVal = cookieNewVal + dhl.subpagedropdown.storeSettings.separator + id + dhl.subpagedropdown.storeSettings.splitter + selectedItem;
                            restart = true;
                            break;
                        }else{
                            
                            // id not yet used --> can be added
                            cookieNewVal = cookieNewVal + dhl.subpagedropdown.storeSettings.separator + pair[0] + dhl.subpagedropdown.storeSettings.splitter + pair[1];
                        }
                    }
                }
            }
                
            // add new item if no restart
            if (!restart) {
                cookieNewVal = cookieNewVal + dhl.subpagedropdown.storeSettings.separator + id + dhl.subpagedropdown.storeSettings.splitter + selectedItem;
            }
            
            $.cookie(dhl.subpagedropdown.storeSettings.name, cookieNewVal,{path:'/'});
            

        }
   
    },

    /**
	 * hide all sections
	 * 
	 * @param: container - container dom element
	 */
    hideSubPages: function(container){
        container.children('.subpagedropdown-section').addClass('hd');
    },

    /**
	 * show a single section
	 * 
	 * @param: worker - object with infos about container to show or load
	 */
    showSubPage: function(worker){
        if (worker.id != '') {
            var section = $('#'+worker.id);
            if (section.length > 0) {
                section.removeClass('hd').css('width','100%').animate({width: '100%'},500);
                dhl.subpagedropdown.initQgo();
            } else {
                dhl.subpagedropdown.loadSubPage(worker);
            }
        }
    },

    /**
	 * load a single section by AJAX
	 * 
	 * @param: worker - object with infos about container to show or load
	 */
    loadSubPage: function(worker){
        var sectionHtml = '<div id="' + worker.id + '" class="subpagedropdown-section">';
        sectionHtml += '<p class="loading">' + dhl.subpagedropdown.lang.loading + '</p>';
        sectionHtml += '</div>';
        worker.container.append(sectionHtml);

        var url = worker.value + dhl_config.subpagedropdown.extension + dhl_config.subpagedropdown.authormode;
        
        if (dhl.subpagedropdown.gkp.tokenIDValue != '') {
	        url += dhl_config.subpagedropdown.authormode != '' ? '&' : '?';
			url += dhl.subpagedropdown.gkp.tokenIDParamName + '=' + dhl.subpagedropdown.gkp.tokenIDValue;
        }
        
        
        $('#'+worker.id).load(url, function() {
             // iterate through the document onready list and trigger all the
				// multicall functions (!)
             $.each(dhl.eventlist.multicall, function(k){
                 this.call(document, $);
             });
             dhl.subpagedropdown.initQgo();
             
            // grab all the forms in the included html and change their actions
            $.each($('#'+worker.id+' form'), function() {
                var action = $(this).attr('action');
                action += '?subpagedropdown=' + worker.value;
                if (dhl.subpagedropdown.gkp.tokenIDValue != '') {
                	action += '&' + dhl.subpagedropdown.gkp.tokenIDParamName + '=' + dhl.subpagedropdown.gkp.tokenIDValue;
                }                
                $(this).attr('action', action);
            });
        });
    },

    /**
	 * set width of select boxes in dependancy of button and container width
	 * 
	 * @param: container dom element
	 */
    setWidth: function(container) {
        var searchRange = container ? container.find('.subpagedropdown') : $('#content-wrapper .subpagedropdown');

        if (searchRange.length > 0) {
            searchRange.children('form').find('select').each(function(){
                // get element
                var el = $(this);
                // reset default width
                el.css('max-width', 'none');
    
                // get button and container
                var button = el.next();
                var parent = el.parents('.subpagedropdown').eq(0);
                var maxWidth = parent.width() - button.outerWidth(true);

                // set buffer
                var buffer = 1;
    
                if($.browser.msie) {
                    if ($.browser.version < 7) {
                        buffer = 3;
                    }
                    el.css('width', 'auto');
                }

                // set width if it is bigger than max possible width
                if(el.outerWidth(true) > maxWidth) {
                    el.width(maxWidth - buffer);
                } 
            });
        }
    },
    
    /**
	 * create json and put to qgo
	 */
     askQgo: function(subject) {
         // check for qgo faq page
         if(!dhl_config.qgo) return; 
         if(dhl_config.qgo.isFAQ) {
             // get options
             var root =  $('.subpagedropdown-form:first select option:selected');
             var childs = $('.subpagedropdown:first > .subpagedropdown-section:not(.hd) .subpagedropdown-form select option:selected').filter(function(idx) {
                 var el = $(this);
                 if(el.val() != "") return true;   
                 return false;
             });
             // create query json
             var data = {};
             data['auswahl'] = [root.text()];
             if(childs.length > 0) {
                 childs.each(function(){
                     data['auswahl'].push($(this).text());
                 })
             }
             if(subject) data.subject = subject;
             var dataString = dhl.faq.stringJson(data);
             if(dataString) {
                 var dataJson = { jsondata: dataString, tpl:"kform"};
                 // set breadcrumb
                 if($('#breadcrumb').length > 0 && $('#breadcrumb').val() !== '') dataJson.bc = $('#breadcrumb').val();
                 // set lang
                 if(dhl_config.qgo.data) {
                    if(dhl_config.qgo.data.lang){
                        dataJson.lang = dhl_config.qgo.data.lang;
                    } 
                 }
                 // set data
                 dhl_config.qgo.data = dataJson;
                 // ajax request - handled by faq component
                 dhl.faq.requestQgo();
             }     
         }    
     },
          
     /**
		 * check if a dynamic field on page - pu value in json request
		 */
     checkDynamicFAQ: function() {
         if(!dhl_config.qgo) return; 
         if(dhl_config.qgo.isFAQ) {
            if($('#content-wrapper .subpagedropdown .dynamicFAQ').length > 0) {
                $('#content-wrapper .subpagedropdown .dynamicFAQ').unbind('blur').blur(function() {
                    var subject = $(this).val();
                    if(subject !== '') {
                        dhl.subpagedropdown.askQgo(subject); 
                    }
                });
             }
          } 
     }
     
};

/**
 * component: track and trace dispatcher 
 */

$(document).ready(function() {
    dhl.trackandtrace.init();
    dhl.eventlist.multicall.trackandtrace = dhl.trackandtrace.init;
});

dhl.trackandtrace = {
    
    /**
     * language definitions
     */
    lang: {
        error: "Error: Invalid shipment number(s). Please check the entered shipment number(s).",
        dateerror: "ui.trackandtrace.dateerror" 
    },

    /**
     * initialize component
     */
    init: function() {
        dhl.trackandtrace.addValidationEvent();
        dhl.trackandtrace.getResults(); //ajax request tracking
        if(dhl_config.trackandtrace) dhl.trackandtrace.initRef(); //set date period
        //overwrite width set from link_dropdown
        $('.trackandtrace .link-dropdown select[name="link-dropdownId"]').css('width','auto');
        //add css class in richtext for flag styling
        $('.trackandtrace .uCond p a img').closest('p').addClass('flags cl');
    },

    /**
     * add click listener to submit button
     */
    addValidationEvent: function() {
        $("#tntdispatcher").submit(dhl.trackandtrace.validateIdc); //paket
        $("#tntdispatcher1").submit(dhl.trackandtrace.validateIdc1); //express
        $("#refSearch").submit(dhl.trackandtrace.validateRef); //referenz
    },

    /**
     * validates the form
     */
    validateIdc: function() {
        var tnt = $('#tntdispatcher');
        tnt.find('p.error').remove();
        
        // First we need to make sure to work with "clean" Elements.
        var cleanArray = dhl.trackandtrace.cleanupIdc('#idc');
        
        // Regardless of the validation result, the input field will be cleaned up too.
        $('#idc').val(cleanArray.join('\n'));
        
        // Then we validate all elements.If one of the elements is not valid,
        // an error message is displayed and the form is not submitted.
        if(dhl.trackandtrace.validateElements(cleanArray)) {
            var reference = $.trim(tnt.find('textarea[name=rfn]').val());
            if(cleanArray != "" || reference!= "") {
                var action = tnt.attr('action');
                var lang = tnt.find('input[name=lang]').attr('value');
                var url = action + "?lang=" + lang + "&idc=" + cleanArray.join(';') + "&rfn=" + reference + '&extendedSearch=true';
                dhl.links.open(url, 'dhl_trackandtrace', {width:523, height:588});
            }
        } else {
            tnt.find('legend').after('<p class="error">' + dhl.trackandtrace.lang.error + '</p>').fadeIn(500);
        };

        return false;
    },
    
    /**
     * validates the form
     */
    validateIdc1: function() {
        var tnt = $('#tntdispatcher1');
        tnt.find('p.error').remove();
        
        var cleanArray = dhl.trackandtrace.cleanupIdc('#idc1');
        $('#idc1').val(cleanArray.join('\n'));
        if(dhl.trackandtrace.validateElements(cleanArray)) {
            //add params to form action to disable cache
            if(cleanArray != "") {
                if(!dhl_config.trackandtrace.disableAjax && dhl_config.trackandtrace.trackingengine) {
                    var action = tnt.attr('action').split('.html');
                    tnt.attr('action', action[0] + '.cache.html'); 
                    return true
                }
                else {
                    //look for choosen tracking engine
                    if(tnt.find('input[name="trackingEngine"]:checked').val() == "national") {
                        var action = dhl_config.trackandtrace.url_nat;
                        var lang = tnt.find('input[name=lang]').attr('value');
                        var url = action + "?lang=" + lang + "&" + dhl_config.trackandtrace.par_nat_track + "=" + cleanArray.join(';') + '&extendedSearch=true';
                        dhl.links.open(url, 'dhl_trackandtrace', {width:523, height:588});
                    }
                    //international
                    else {
                        //cache url
                        if(!dhl_config.trackandtrace.disableAjax) {
                            var split = dhl_config.trackandtrace.url_int.split('.html');
                            var action = split[0] + '.cache.html';
                        }
                        //disabled cache url
                        else var action = dhl_config.trackandtrace.url_int;
                        tnt.attr('action', action);
                        //change form name
                        $('#idc1').attr('name',dhl_config.trackandtrace.par_int_track);
                        return true;
                    }
                }
            }
        }
        else tnt.find('legend').after('<p class="error">' + dhl.trackandtrace.lang.error + '</p>').fadeIn(500);  
        return false;
    },
    
    /**
     * reference handling
     */
     initRef: function() {
        var now = new Date(); //today
        var toDayValue = now.getDate();
        var toMonthValue = now.getMonth() + 1;
        var toYearValue = now.getFullYear();
        var days = (dhl_config.trackandtrace.days) ? dhl_config.trackandtrace.days : 1; 
        var period = new Date(now.getTime() - (1000*60*60*24*days));
        var fromDayValue = period.getDate();
        var fromMonthValue = period.getMonth() + 1;
        var fromYearValue = period.getFullYear();
        $('#toDayValue option[value="' + toDayValue + '"]').attr('selected',true);
        $('#toMonthValue option[value="' + toMonthValue + '"]').attr('selected',true);
        $('#toYearValue option[value="' + toYearValue + '"]').attr('selected',true);
        $('#fromDayValue option[value="' + fromDayValue + '"]').attr('selected',true);
        $('#fromMonthValue option[value="' + fromMonthValue + '"]').attr('selected',true);
        $('#fromYearValue option[value="' + fromYearValue + '"]').attr('selected',true);
        var width = 0;
        $('#refSearch p.select label').each(function() {
            var li = $(this).width();
            if(width < li) width = li;
        }).width(width);
     },
     
     /**
      * validate reference
      * @todo: date validate
      */
    validateRef: function() {
        var tnt = $('#tntdispatcher1');
        var ref = $('#refSearch');
        tnt.find('p.error').remove();
        var now = new Date();
        var toDayValue = now.getDate();
        var period = new Date(now.getTime() - (1000*60*60*24*120)); // 120 days
        var toDayValue = $('#toDayValue option:selected').val();
        var toMonthValue = $('#toMonthValue option:selected').val();
        var toYearValue = $('#toYearValue option:selected').val();
        var fromDayValue = $('#fromDayValue option:selected').val();
        var fromMonthValue = $('#fromMonthValue option:selected').val();
        var fromYearValue = $('#fromYearValue option:selected').val();
        var toPeriod = new Date(fromYearValue, fromMonthValue, fromDayValue);
        //check for 120 days period
        if(toPeriod.getTime() < (now.getTime() - (1000*60*60*24*120))) {
            tnt.find('legend').after('<p class="error">' + dhl.trackandtrace.lang.dateerror + '</p>').fadeIn(500);
        }
        
        //international default
        if(dhl_config.trackandtrace.trackingengine) {
            if(!dhl_config.trackandtrace.disableAjax) {
                var split = dhl_config.trackandtrace.url_int.split('.html');
                var action = split[0] + '.cache.html';
            }
            else var action = dhl_config.trackandtrace.url_int;
            ref.attr('action', action); 
            return true;
        }
        //read engine
        else {
            //national
            if(tnt.find('input[name="trackingEngine"]:checked').val() == "national") {
                var action = dhl_config.trackandtrace.url_nat;
                var url = action + "?" + dhl_config.trackandtrace.par_nat_ref + "=" + $('#shipperReference').val() + '&extendedSearch=true';
                dhl.links.open(url, 'dhl_trackandtrace', {width:523, height:588});
            }
            //international
            else {
                //cache url
                if(!dhl_config.trackandtrace.disableAjax) {
                    var split = dhl_config.trackandtrace.url_int.split('.html');
                    var action = split[0] + '.cache.html';
                }
                //disabled cache url
                else var action = dhl_config.trackandtrace.url_int;
                ref.attr('action', action);
                //change form name
                $('#shipperReference').attr('name',dhl_config.trackandtrace.par_int_ref);
                return true;
            }
        }
        return false;
    },
    
    /**
     * Removes whitespace elements and unifies the separator.
     */
    cleanupIdc: function(selector) {
        var idcContent = $(selector).val();
    
        // Using semicolon as main separator to
        // split field content into an array
        idcContent = idcContent.replace(/\n/g, ';');
        idcContent = idcContent.replace(/,/g, ';');
        var elements = idcContent.split(';');
        
        // Empty elements will be removed
        var cleanArray = [];
        $.each(elements,function(){
            var elementValue = this.replace(/ /g, '');
            elementValue = elementValue.replace(/\./g,'');
            elementValue = elementValue.replace(/\r/g,'');
            if(elementValue != '') {
                cleanArray.push(elementValue);
            }
        });

        return cleanArray;
    },
    
    /**
     * Iterates though all elements of the idc array and
     * validates each element for the given formats.
     * @param pArray - array of tracking numbers to be validated
     */
    validateElements: function(pArray) {
        var isValid = true;
        var format1 = /^[0-9]{10,20}$/;
        var format2 = /^(P|p)[0-9]{4,19}$/;
        var format3 = /^\w{6,39}$/;
        
        var atLeastOneCharacter = /^\w*[a-zA-Z]+\w*$/; 
        var atLeastOneDigit = /^\w*[0-9]+\w*$/;

        $.each(pArray, function(){
            var isFormat1Valid = format1.test(this);
            var isFormat2Valid = format2.test(this);
            var isFormat3Valid = format3.test(this) && atLeastOneDigit.test(this) && atLeastOneCharacter.test(this);
            if(!(isFormat1Valid || isFormat2Valid || isFormat3Valid)) {
                isValid = false;
            };
        });
        
        return isValid;
    },
   
    /**
     * default replace object
     */
    replace: {
        'id="ShowAllWithoutDuplicate"': 'class="hd"',
                 '<div class="trackingengines"></div>': '',
                 'class="new_search"': 'class="hd"',
                 '.css': ''
    }, 
    
    /**
     * get results from dhl.com with ajax
     */
    getResults: function() {
        var el = $('#trackAndTraceResults');
        if(el.length > 0) {
            if(window.location.href.indexOf('.cache.html') !== -1) {
                el.addClass('loading'); //add loading indicator if js and cache page       
            } else {
                return; //not on a cached page
            }
            if(dhl_config.trackandtrace) {
               var params = window.location.search.split('?')[1];
               dhl_config.trackandtrace.url = (params.indexOf('searchType=tracking') > 0) ? dhl_config.trackandtrace.url_track : dhl_config.trackandtrace.url_ref;
               $.ajax({
                  url: dhl_config.trackandtrace.url,
                  cache: false,
                  data: params,
                  success: function(html){
                      dhl.trackandtrace.success(html,el);
                  },
                  error: function(){
                      el.append('<p class="error">' + dhl.trackandtrace.lang.error + '</p>').fadeIn(500).removeClass('loading');
                  }
               });
            }
        }
    },
   
    /**
     * parse ajax string - append to dom - clean dom - set listener
     * called if ajax success
     */
    success: function(html,el) {
         
         //search and replace given strings and append html to dom
         el.addClass('hd').append(dhl.replace.regexAll((dhl_config.trackandtrace.replace || dhl.trackandtrace.replace),html)); 
         
         /*
         //hide details
         el.find('thead,tbody').not('.tophead').css('display','none');
         
         //toggle details
         var toggleLinks = el.find('.details .arrowLink');
         var showTitle = toggleLinks.parent('.details').attr('title');
         var hideTitle = toggleLinks.parent('.details').attr('closetitle');
         toggleLinks.text(showTitle);
         toggleLinks.attr('href','#').click(function(e) {
             e.preventDefault();
             var cur = $(this);
             var id = cur.parent().attr('basecontainer');
             if(cur.parent().attr('open') == "false") {
                cur.parent().attr('open','true');
                var table = $('#'+id); 
                if(table.length > 0){
                    table.find('thead,tbody').not('.tophead').attr('style','');
                } else {
                    cur.parent('.details').prev('.tableborder').find('thead,tbody').not('.tophead').attr('style','');
                }
                cur.text(hideTitle);
             }
             else {
                 cur.parent().attr('open','false');
                 var table = $('#'+id); 
                 if(table.length > 0){
                    table.find('thead,tbody').not('.tophead').attr('style','display:none;');
                 }
                 else {
                     cur.parent('.details').prev('.tableborder').find('thead,tbody').not('.tophead').attr('style','display:none;');
                 }
                 cur.text(showTitle);
             }
         });
         */
         
         //fix image paths
         var img = el.find('th.icon img');
         img.each(function(){ //ie7 bug
             var cur = $(this);
             if(cur.attr('src').indexOf('http') !== -1) {
                var split = cur.attr('src').split('/img/');
                cur.attr('src', dhl_config.trackandtrace.domain + '/img/' + split[1]);
             } 
             else {
                 cur.attr('src', dhl_config.trackandtrace.domain + cur.attr('src'));
             }
         });
         
         //delete unused img
         el.find('.tophead span.font_normal img').remove();
         
         //show ajax results - remove loading indicator
         el.animate({width: "100%"}, 1000, function() { el.removeClass('hd loading'); });
         
         
         //on error from .com overwrite their settings
         el.find('table:first td:first div');
         if(el.width() > el.closest('#trackAndTraceResults').width()) {
            el.width((el.closest('#trackAndTraceResults').width()-50));
         } 
    }
}




/**
 * component: campaignflash 
 */

$(document).ready(function() {
	dhl.campaignflash.init();
});

dhl.campaignflash = {
	
	/**
	 * initialize component
	 */
	init: function() {
		$('.flash.fadein').fadeOut(function(){
			$(this).removeClass('hd').fadeIn('slow');
		});	
	}
}



/**
 * component: footer-nav
 */

$(document).ready(function() {
	dhl.footer_nav.init();
	dhl.eventlist.singlecall.footer_nav = dhl.footer_nav.init;
});

dhl.footer_nav = {

	/**
	 * language definitions
	 */
	lang: {
		print: "Print"
	},

	/**
	 * initialize component
	 */
	init: function() {
		$('#footer .footer-nav li.second').removeClass('second');
		$('#footer .footer-nav li.first').after('<li class="second print"><a href="#" title="">'+dhl.footer_nav.lang.print+'</a></li>');
		$('#footer .footer-nav li.print a').click(function(e) {
			e.preventDefault();
			window.print();
		});
	}
}


