




/**
 * project: dhl.de
 * type: javascript
 * description: loader for component based javascript (contentpage)
 * @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');
			}
		);
	}
}

/**
 * search and replace dom notes and strings
 */
$(document).ready(function() {
	dhl.replace.init();
	dhl.eventlist.multicall.replace = dhl.replace.init;
});

dhl.replace = {
    
    init: function(){
    },
	     
    /**
     * search and replace 
     * @param {Object} search and replace terms (key:value)
     * @param {String} text to serach in 
     * @param {Boolean} true to find all in text 
     */
    regexAll: function(obj,str) {
        var replaced = "";
        $.each(obj,function(k,v) {
            var escaped = k.replace(/([\^$\.\*\+\?\=\!\:\|\\\/\(\)\[\]\{\}])/g,"\$1");  
            replaced = str.replace(new RegExp(escaped,"g"),v);
            str = replaced;
        });
        return replaced;
    }
}

/*
    http://www.JSON.org/json2.js
    2011-01-18

    Public Domain.

    NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.

    See http://www.JSON.org/js.html


    This code should be minified before deployment.
    See http://javascript.crockford.com/jsmin.html

    USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
    NOT CONTROL.


    This file creates a global JSON object containing two methods: stringify
    and parse.

        JSON.stringify(value, replacer, space)
            value       any JavaScript value, usually an object or array.

            replacer    an optional parameter that determines how object
                        values are stringified for objects. It can be a
                        function or an array of strings.

            space       an optional parameter that specifies the indentation
                        of nested structures. If it is omitted, the text will
                        be packed without extra whitespace. If it is a number,
                        it will specify the number of spaces to indent at each
                        level. If it is a string (such as '\t' or '&nbsp;'),
                        it contains the characters used to indent at each level.

            This method produces a JSON text from a JavaScript value.

            When an object value is found, if the object contains a toJSON
            method, its toJSON method will be called and the result will be
            stringified. A toJSON method does not serialize: it returns the
            value represented by the name/value pair that should be serialized,
            or undefined if nothing should be serialized. The toJSON method
            will be passed the key associated with the value, and this will be
            bound to the value

            For example, this would serialize Dates as ISO strings.

                Date.prototype.toJSON = function (key) {
                    function f(n) {
                        // Format integers to have at least two digits.
                        return n < 10 ? '0' + n : n;
                    }

                    return this.getUTCFullYear()   + '-' +
                         f(this.getUTCMonth() + 1) + '-' +
                         f(this.getUTCDate())      + 'T' +
                         f(this.getUTCHours())     + ':' +
                         f(this.getUTCMinutes())   + ':' +
                         f(this.getUTCSeconds())   + 'Z';
                };

            You can provide an optional replacer method. It will be passed the
            key and value of each member, with this bound to the containing
            object. The value that is returned from your method will be
            serialized. If your method returns undefined, then the member will
            be excluded from the serialization.

            If the replacer parameter is an array of strings, then it will be
            used to select the members to be serialized. It filters the results
            such that only members with keys listed in the replacer array are
            stringified.

            Values that do not have JSON representations, such as undefined or
            functions, will not be serialized. Such values in objects will be
            dropped; in arrays they will be replaced with null. You can use
            a replacer function to replace those with JSON values.
            JSON.stringify(undefined) returns undefined.

            The optional space parameter produces a stringification of the
            value that is filled with line breaks and indentation to make it
            easier to read.

            If the space parameter is a non-empty string, then that string will
            be used for indentation. If the space parameter is a number, then
            the indentation will be that many spaces.

            Example:

            text = JSON.stringify(['e', {pluribus: 'unum'}]);
            // text is '["e",{"pluribus":"unum"}]'


            text = JSON.stringify(['e', {pluribus: 'unum'}], null, '\t');
            // text is '[\n\t"e",\n\t{\n\t\t"pluribus": "unum"\n\t}\n]'

            text = JSON.stringify([new Date()], function (key, value) {
                return this[key] instanceof Date ?
                    'Date(' + this[key] + ')' : value;
            });
            // text is '["Date(---current time---)"]'


        JSON.parse(text, reviver)
            This method parses a JSON text to produce an object or array.
            It can throw a SyntaxError exception.

            The optional reviver parameter is a function that can filter and
            transform the results. It receives each of the keys and values,
            and its return value is used instead of the original value.
            If it returns what it received, then the structure is not modified.
            If it returns undefined then the member is deleted.

            Example:

            // Parse the text. Values that look like ISO date strings will
            // be converted to Date objects.

            myData = JSON.parse(text, function (key, value) {
                var a;
                if (typeof value === 'string') {
                    a =
/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2}(?:\.\d*)?)Z$/.exec(value);
                    if (a) {
                        return new Date(Date.UTC(+a[1], +a[2] - 1, +a[3], +a[4],
                            +a[5], +a[6]));
                    }
                }
                return value;
            });

            myData = JSON.parse('["Date(09/09/2001)"]', function (key, value) {
                var d;
                if (typeof value === 'string' &&
                        value.slice(0, 5) === 'Date(' &&
                        value.slice(-1) === ')') {
                    d = new Date(value.slice(5, -1));
                    if (d) {
                        return d;
                    }
                }
                return value;
            });


    This is a reference implementation. You are free to copy, modify, or
    redistribute.
*/

/*jslint evil: true, strict: false, regexp: false */

/*members "", "\b", "\t", "\n", "\f", "\r", "\"", JSON, "\\", apply,
    call, charCodeAt, getUTCDate, getUTCFullYear, getUTCHours,
    getUTCMinutes, getUTCMonth, getUTCSeconds, hasOwnProperty, join,
    lastIndex, length, parse, prototype, push, replace, slice, stringify,
    test, toJSON, toString, valueOf
*/


// Create a JSON object only if one does not already exist. We create the
// methods in a closure to avoid creating global variables.

var JSON;
if (!JSON) {
    JSON = {};
}

(function () {
    "use strict";

    function f(n) {
        // Format integers to have at least two digits.
        return n < 10 ? '0' + n : n;
    }

    if (typeof Date.prototype.toJSON !== 'function') {

        Date.prototype.toJSON = function (key) {

            return isFinite(this.valueOf()) ?
                this.getUTCFullYear()     + '-' +
                f(this.getUTCMonth() + 1) + '-' +
                f(this.getUTCDate())      + 'T' +
                f(this.getUTCHours())     + ':' +
                f(this.getUTCMinutes())   + ':' +
                f(this.getUTCSeconds())   + 'Z' : null;
        };

        String.prototype.toJSON      =
            Number.prototype.toJSON  =
            Boolean.prototype.toJSON = function (key) {
                return this.valueOf();
            };
    }

    var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
        escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
        gap,
        indent,
        meta = {    // table of character substitutions
            '\b': '\\b',
            '\t': '\\t',
            '\n': '\\n',
            '\f': '\\f',
            '\r': '\\r',
            '"' : '\\"',
            '\\': '\\\\'
        },
        rep;


    function quote(string) {

// If the string contains no control characters, no quote characters, and no
// backslash characters, then we can safely slap some quotes around it.
// Otherwise we must also replace the offending characters with safe escape
// sequences.

        escapable.lastIndex = 0;
        return escapable.test(string) ? '"' + string.replace(escapable, function (a) {
            var c = meta[a];
            return typeof c === 'string' ? c :
                '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
        }) + '"' : '"' + string + '"';
    }


    function str(key, holder) {

// Produce a string from holder[key].

        var i,          // The loop counter.
            k,          // The member key.
            v,          // The member value.
            length,
            mind = gap,
            partial,
            value = holder[key];

// If the value has a toJSON method, call it to obtain a replacement value.

        if (value && typeof value === 'object' &&
                typeof value.toJSON === 'function') {
            value = value.toJSON(key);
        }

// If we were called with a replacer function, then call the replacer to
// obtain a replacement value.

        if (typeof rep === 'function') {
            value = rep.call(holder, key, value);
        }

// What happens next depends on the value's type.

        switch (typeof value) {
        case 'string':
            return quote(value);

        case 'number':

// JSON numbers must be finite. Encode non-finite numbers as null.

            return isFinite(value) ? String(value) : 'null';

        case 'boolean':
        case 'null':

// If the value is a boolean or null, convert it to a string. Note:
// typeof null does not produce 'null'. The case is included here in
// the remote chance that this gets fixed someday.

            return String(value);

// If the type is 'object', we might be dealing with an object or an array or
// null.

        case 'object':

// Due to a specification blunder in ECMAScript, typeof null is 'object',
// so watch out for that case.

            if (!value) {
                return 'null';
            }

// Make an array to hold the partial results of stringifying this object value.

            gap += indent;
            partial = [];

// Is the value an array?

            if (Object.prototype.toString.apply(value) === '[object Array]') {

// The value is an array. Stringify every element. Use null as a placeholder
// for non-JSON values.

                length = value.length;
                for (i = 0; i < length; i += 1) {
                    partial[i] = str(i, value) || 'null';
                }

// Join all of the elements together, separated with commas, and wrap them in
// brackets.

                v = partial.length === 0 ? '[]' : gap ?
                    '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']' :
                    '[' + partial.join(',') + ']';
                gap = mind;
                return v;
            }

// If the replacer is an array, use it to select the members to be stringified.

            if (rep && typeof rep === 'object') {
                length = rep.length;
                for (i = 0; i < length; i += 1) {
                    k = rep[i];
                    if (typeof k === 'string') {
                        v = str(k, value);
                        if (v) {
                            partial.push(quote(k) + (gap ? ': ' : ':') + v);
                        }
                    }
                }
            } else {

// Otherwise, iterate through all of the keys in the object.

                for (k in value) {
                    if (Object.hasOwnProperty.call(value, k)) {
                        v = str(k, value);
                        if (v) {
                            partial.push(quote(k) + (gap ? ': ' : ':') + v);
                        }
                    }
                }
            }

// Join all of the member texts together, separated with commas,
// and wrap them in braces.

            v = partial.length === 0 ? '{}' : gap ?
                '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}' :
                '{' + partial.join(',') + '}';
            gap = mind;
            return v;
        }
    }

// If the JSON object does not yet have a stringify method, give it one.

    if (typeof JSON.stringify !== 'function') {
        JSON.stringify = function (value, replacer, space) {

// The stringify method takes a value and an optional replacer, and an optional
// space parameter, and returns a JSON text. The replacer can be a function
// that can replace values, or an array of strings that will select the keys.
// A default replacer method can be provided. Use of the space parameter can
// produce text that is more easily readable.

            var i;
            gap = '';
            indent = '';

// If the space parameter is a number, make an indent string containing that
// many spaces.

            if (typeof space === 'number') {
                for (i = 0; i < space; i += 1) {
                    indent += ' ';
                }

// If the space parameter is a string, it will be used as the indent string.

            } else if (typeof space === 'string') {
                indent = space;
            }

// If there is a replacer, it must be a function or an array.
// Otherwise, throw an error.

            rep = replacer;
            if (replacer && typeof replacer !== 'function' &&
                    (typeof replacer !== 'object' ||
                    typeof replacer.length !== 'number')) {
                throw new Error('JSON.stringify');
            }

// Make a fake root object containing our value under the key of ''.
// Return the result of stringifying the value.

            return str('', {'': value});
        };
    }


// If the JSON object does not yet have a parse method, give it one.

    if (typeof JSON.parse !== 'function') {
        JSON.parse = function (text, reviver) {

// The parse method takes a text and an optional reviver function, and returns
// a JavaScript value if the text is a valid JSON text.

            var j;

            function walk(holder, key) {

// The walk method is used to recursively walk the resulting structure so
// that modifications can be made.

                var k, v, value = holder[key];
                if (value && typeof value === 'object') {
                    for (k in value) {
                        if (Object.hasOwnProperty.call(value, k)) {
                            v = walk(value, k);
                            if (v !== undefined) {
                                value[k] = v;
                            } else {
                                delete value[k];
                            }
                        }
                    }
                }
                return reviver.call(holder, key, value);
            }


// Parsing happens in four stages. In the first stage, we replace certain
// Unicode characters with escape sequences. JavaScript handles many characters
// incorrectly, either silently deleting them, or treating them as line endings.

            text = String(text);
            cx.lastIndex = 0;
            if (cx.test(text)) {
                text = text.replace(cx, function (a) {
                    return '\\u' +
                        ('0000' + a.charCodeAt(0).toString(16)).slice(-4);
                });
            }

// In the second stage, we run the text against regular expressions that look
// for non-JSON patterns. We are especially concerned with '()' and 'new'
// because they can cause invocation, and '=' because it can cause mutation.
// But just to be safe, we want to reject all unexpected forms.

// We split the second stage into 4 regexp operations in order to work around
// crippling inefficiencies in IE's and Safari's regexp engines. First we
// replace the JSON backslash pairs with '@' (a non-JSON character). Second, we
// replace all simple value tokens with ']' characters. Third, we delete all
// open brackets that follow a colon or comma or that begin the text. Finally,
// we look to see that the remaining characters are only whitespace or ']' or
// ',' or ':' or '{' or '}'. If that is so, then the text is safe for eval.

            if (/^[\],:{}\s]*$/
                    .test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@')
                        .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']')
                        .replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {

// In the third stage we use the eval function to compile the text into a
// JavaScript structure. The '{' operator is subject to a syntactic ambiguity
// in JavaScript: it can begin a block or an object literal. We wrap the text
// in parens to eliminate the ambiguity.

                j = eval('(' + text + ')');

// In the optional fourth stage, we recursively walk the new structure, passing
// each name/value pair to a reviver function for possible transformation.

                return typeof reviver === 'function' ?
                    walk({'': j}, '') : j;
            }

// If the text is not JSON parseable, then a SyntaxError is thrown.

            throw new SyntaxError('JSON.parse');
        };
    }
}());



/**
 * 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: startpage selector
 */

$(document).ready(function() {
	dhl.startpage_selector.init();
	dhl.eventlist.singlecall.startpage_selector = dhl.startpage_selector.init;
});

dhl.startpage_selector = {
	
	lang: {
		headline: "A cookie is stored",
		txt: "Please note that the content is limited to this website's address. Your name, IP address and so on are not stored. No individual profiling is performed on the basis of your usage behaviour."
	},
	
	/**
	 * initialize component
	 */
	init: function() {
		dhl.startpage_selector.setLinkStatus();
		dhl.startpage_selector.toggleCookieStatus();
	},

	/**
	 * cookie: settings and counter
	 */
	cookie: {
		counter: 0,
		settings: {
			name: 'dhlde_startpage',
			expires: 9999,
			path: '/',
			separator: '###'
		}
	},

	/**
	 * set link status
	 */
	setLinkStatus: function() {
		var link = $('#sidebar-left .startpageselector a');
		if (link.length != 0) {
			var cookie;
			if (cookie = $.cookie(dhl.startpage_selector.cookie.settings.name)) { // read cookie @ start
				if (cookie == window.location.pathname) {
					dhl.startpage_selector.cookie.counter++;
					link.parent().addClass('active');
				}
			}
		}
	},

	/**
	 * set link status
	 */
	toggleCookieStatus: function() {
		$('#sidebar-left .startpageselector a').click(function(e){ // click listener
			e.preventDefault();

			var link = $(this);
			var settings = dhl.startpage_selector.cookie.settings;
			var proceed = true;
			
			if (!link.parent().hasClass('active')) {
				// display cookie notification to the user
				if (dhl.startpage_selector.cookie.counter < 1) {
					dhl.messages.show(link, dhl.startpage_selector.lang, dhl.startpage_selector.setCookie);
				} else {
					dhl.startpage_selector.setCookie(link);
				}
			} else {
				$.cookie(settings.name, null, {
					path: settings.path
				}); // delete cookie
				link.parent().toggleClass('active'); // check or uncheck link
			}
		});
	},

	/**
	 * set cookie and link status
	 * @param link - link that was clicked
	 */
	setCookie: function(link) {
		dhl.startpage_selector.cookie.counter++;

		var settings = dhl.startpage_selector.cookie.settings;
		$.cookie(settings.name, window.location.pathname, {
			expires: settings.expires,
			path: settings.path
		}); // write cookie
		link.parent().toggleClass('active'); // check or uncheck link
	}
}

/**
 * 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: nfas
 */

$(document).ready(function() {
	dhl.nfas.init();
	dhl.eventlist.multicall.nfas = dhl.nfas.init;
});

dhl.nfas = {
	
	/**
	 * initialize component
	 */
	init: function() {
		if($.browser.msie || $.browser.version < 8) {
			dhl.nfas.setWidth();
		}
	},
	
	/**
	 * set max-width for select boxes in ie
	 */
	setWidth: function() {
		$('#content-wrapper .nfas select').each(function(){
			var el = $(this);
			if(el.width() > el.parent().width()) {
				el.width(el.parent().width());
			} 
		});
	}
}
/**
 * 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: faq
 */
$(document).ready(function() {
    dhl.faq.init();
});

dhl.faq = {
    
    init: function() {},
    
    //request qgo
    requestQgo: function() {
        //window.setTimeout("dhl.faq.timeout()", 2000);
        $.ajax({
            type: 'GET',
            url: dhl_config.qgo.url,
            processData: true,
            data: dhl_config.qgo.data,
            dataType: "jsonp",
            success: dhl.faq.parseJson,
            error: dhl.faq.error
        });
    },
        
    //parse json
    parseJson: function(json) {
        var html = '';
        var separator = '';
        var time = 1000;
       	
       	if(json.ok) return; //tracking
        if(!json || !json.mqs) {
        	$('.qgo').fadeOut(0).html('').fadeIn(0);
        };
        
        $.each(json.mqs,function(k,v) {
           v.handle = json.handle; //set handle id for reporting
           switch (v.qtype) {
              case "DropDown":
                html += dhl.faq.renderDropDown(v) + separator;
              break;
              case "MultiAnswer":
                 html += dhl.faq.renderMultiAnswer(v) + separator;
              break;
              case "Single":
                 html += dhl.faq.renderSingle(v) + separator;
              break;
              default:
              break;
           }
       });
       //write created html in dom
       if($.browser == 'msie' || $.browser.version < 7) time = 0;
       if(html !== '') $('.qgo').fadeOut(0).html(html).fadeIn(time);
       //init new html
       dhl.faq.initHtml();
    },
    
    //error handler
    error: function(xhr, status, exception) {
    	$('.qgo').fadeOut(0).html('').fadeIn(0);
    },
    
    //object to json string
    stringJson: function(data) {
        return JSON.stringify(data);
    },
    
    //render dropdowns
    renderDropDown: function(v) {
        var html = '<div><p class="qgooption"><a href="#">';
        var select = ' <select>';
        $.each(v.sub, function(kk,vv) {
            if (vv.atype == 'URL') var cls = 'qgourl'; 
            else var cls = 'html';
            select += '<option' + vv.selected + ' value="' + vv.obj + '" class="' + cls + '" id="' + v.handle + '###' + v.qid + '###' + vv.aid + '###' + v.clicktype + '">' + vv.el + '</option>';
        });
        select += '</select>';
        
        if(v.repr.indexOf('#') !== -1) {
            html += dhl.replace.regexAll({'#': '</a>' + select + '<a href="#">'},v.repr);
            return html += '</a></p>';
        }
        else {
            html += v.repr + '</a>' + select;
            return html += '</p></div>';
        }
    },
    
    //render multianswer
    renderMultiAnswer: function(v) {
        var html = '<div class="expandablearea">';
        html += '<div class="area-status closed"><h2 class="area-title">' + v.repr + '</h2>';
        html += '<div class="expandable cl">';
        
        $.each(v.sub, function(kk,vv) {
            //reporting
            vv.handle = v.handle;
            vv.qid = v.qid;
            vv.clicktype = v.clicktype;
            
            if (vv.atype == 'URL') html += '<p>' + dhl.faq.renderLink(vv) + '</p>';
            else html += '<div><p><a href="#" class="qgoreport html" id="' + vv.handle + '###' + vv.qid + '###' + vv.aid + '###' + vv.clicktype + '">' + vv.el + '</a></p><div class="hd details">' + vv.obj + '</div></div>';
        });
        return html += '</div></div></div>';
    },
    
    //render single
    renderSingle: function(v) {
        v.el = v.repr;
        var html = '';
        if(v.atype == 'URL') html += '<p>' + dhl.faq.renderLink(v) + '</p>'; //URL
        else { //HTML
            html += '<div class="expandablearea">';
            html += '<div class="area-status closed"><h2 class="area-title qgoreport" id="' + v.handle + '###' + v.qid + '###' + v.aid + '###' + v.clicktype + '">' + v.el + '</h2>';
            html += '<div class="expandable cl">' + v.obj + '</div></div></div>';
        }
        return html;
    },
    
    //render html links
    renderLink: function(v) {
        return '<a href="' + v.obj + '" target="_new" id="' + v.handle + '###' + v.qid + '###' + v.aid + '###' + v.clicktype + '" class="qgoreport">' + v.el + '</a>';
    },
    
    //init html answers
    initHtml: function() {
        //listen on options URL
        $('.qgo select').change(function(e) {
            var el = $(this).find('option:selected');
            dhl.faq.handleDropDown(el);
        });
        //qgooption text links
        $('.qgo .qgooption a').click(function(e) {
            e.preventDefault();
            var el = $(this).parent('.qgooption').find('option:selected');
            dhl.faq.handleDropDown(el);
        }).hover(function() { //underline the seconond link part on hover
            $(this).parent('.qgooption').find('a').addClass('hover');    
        },function() {
            $(this).parent('.qgooption').find('a').removeClass('hover');    
        });
        //init expandables
        dhl.expandablearea.init(); 
        //handle reporting links
        $('.qgo .qgoreport').click(function(){
            dhl.faq.report($(this).attr('id'));
            var cur = $(this);
            cur.closest('.expandable').find('.details').addClass('hd');
            if(cur.hasClass('html')) {
               cur.closest('div').find('div.details').removeClass('hd'); 
            }
        });
        //handle reporting h2
        $('.qgo .qgoreport a').click(function(){
            dhl.faq.report($(this).parent('h2').attr('id'));
        });
        //look for too big selectboxes
        $('.qgo select').each(function(){
            if($(this).width() > 200) {
               $(this).width(200); 
            }
        });
    },
    
    //handle clicks and selects of drop down lists
    handleDropDown: function(el) {
        if(el.hasClass('qgourl')) {
           dhl.faq.report(el.attr('id'));
           window.open(el.val());
        }
        else {
            el.closest('.qgooption').closest('div').find('div.html').remove();
            el.closest('.qgooption').closest('div').append('<div class="html">' + el.val() + '</div>');
            dhl.faq.report(el.attr('id'));
        }
        
    },
    
    //send reports to qgo
    report: function(id) {
        var report = id.split('###');
        if(report.length == 4) {
            var reportstr = {
                "click": {
                    "handle": report[0],
                    "qid": report[1],
                    "aid": report[2],
                    "clicktype": report[3]
                }
            };
            dhl_config.qgo.data.jsondata = dhl.faq.stringJson(reportstr); 
            dhl.faq.requestQgo();
        }
    }
    
}    




/**
 * 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();
		});
	}
}


