(function($){
$.fn.checkbox=function(){
$(this).each(function(){
var $el=$(this);
var typeClass=$el.attr('type');
$el.hide();
$el.next('.'+typeClass+'-sign').remove();
var $checkbox=$('<span class="'+typeClass+'-sign" />').insertAfter($el);
$checkbox.click(function(){
if($checkbox.closest('label').length) return;
if($el.attr('type')=='radio'){
$el.prop('checked', true).trigger('change').trigger('click');
}else{
$el.prop('checked', !($el.is(':checked'))).trigger('change');
}});
$el.change(function(){
$('input[name="'+$el.attr('name')+'"]').each(function(){
if($(this).is(':checked')){
$(this).next('.'+$(this).attr('type')+'-sign').addClass('checked');
}else{
$(this).next('.'+$(this).attr('type')+'-sign').removeClass('checked');
}});
});
if($el.is(':checked')){
$checkbox.addClass('checked');
}else{
$checkbox.removeClass('checked');
}});
}
$.fn.combobox=function(){
$(this).each(function(){
var $el=$(this);
$el.insertBefore($el.parent('.combobox-wrapper'));
$el.next('.combobox-wrapper').remove();
$el.css({
'opacity': 0,
'position': 'absolute',
'left': 0,
'right': 0,
'top': 0,
'bottom': 0
});
var $comboWrap=$('<span class="combobox-wrapper" />').insertAfter($el);
var $text=$('<span class="combobox-text" />').appendTo($comboWrap);
var $button=$('<span class="combobox-button" />').appendTo($comboWrap);
$el.appendTo($comboWrap);
$el.change(function(){
$text.text($('option:selected', $el).text());
});
$text.text($('option:selected', $el).text());
$el.comboWrap=$comboWrap;
});
}})(jQuery);
(function (factory){
if(typeof define==="function"&&define.amd){
define(["jquery"], function ($){
return factory($)
})
}else if(typeof module==="object"&&typeof module.exports==="object"){
exports=factory(require("jquery"))
}else{
factory(jQuery)
}})(function ($){
$.easing.jswing=$.easing.swing;
var pow=Math.pow, sqrt=Math.sqrt, sin=Math.sin, cos=Math.cos, PI=Math.PI, c1=1.70158, c2=c1 * 1.525,
c3=c1 + 1, c4=2 * PI / 3, c5=2 * PI / 4.5;
function bounceOut(x){
var n1=7.5625, d1=2.75;
if(x < 1 / d1){
return n1 * x * x
}else if(x < 2 / d1){
return n1 * (x -=1.5 / d1) * x + .75
}else if(x < 2.5 / d1){
return n1 * (x -=2.25 / d1) * x + .9375
}else{
return n1 * (x -=2.625 / d1) * x + .984375
}}
$.extend($.easing, {
def: "easeOutQuad", swing: function (x){
return $.easing[$.easing.def](x)
}, easeInQuad: function (x){
return x * x
}, easeOutQuad: function (x){
return 1 - (1 - x) * (1 - x)
}, easeInOutQuad: function (x){
return x < .5 ? 2 * x * x:1 - pow(-2 * x + 2, 2) / 2
}, easeInCubic: function (x){
return x * x * x
}, easeOutCubic: function (x){
return 1 - pow(1 - x, 3)
}, easeInOutCubic: function (x){
return x < .5 ? 4 * x * x * x:1 - pow(-2 * x + 2, 3) / 2
}, easeInQuart: function (x){
return x * x * x * x
}, easeOutQuart: function (x){
return 1 - pow(1 - x, 4)
}, easeInOutQuart: function (x){
return x < .5 ? 8 * x * x * x * x:1 - pow(-2 * x + 2, 4) / 2
}, easeInQuint: function (x){
return x * x * x * x * x
}, easeOutQuint: function (x){
return 1 - pow(1 - x, 5)
}, easeInOutQuint: function (x){
return x < .5 ? 16 * x * x * x * x * x:1 - pow(-2 * x + 2, 5) / 2
}, easeInSine: function (x){
return 1 - cos(x * PI / 2)
}, easeOutSine: function (x){
return sin(x * PI / 2)
}, easeInOutSine: function (x){
return -(cos(PI * x) - 1) / 2
}, easeInExpo: function (x){
return x===0 ? 0:pow(2, 10 * x - 10)
}, easeOutExpo: function (x){
return x===1 ? 1:1 - pow(2, -10 * x)
}, easeInOutExpo: function (x){
return x===0 ? 0:x===1 ? 1:x < .5 ? pow(2, 20 * x - 10) / 2:(2 - pow(2, -20 * x + 10)) / 2
}, easeInCirc: function (x){
return 1 - sqrt(1 - pow(x, 2))
}, easeOutCirc: function (x){
return sqrt(1 - pow(x - 1, 2))
}, easeInOutCirc: function (x){
return x < .5 ? (1 - sqrt(1 - pow(2 * x, 2))) / 2:(sqrt(1 - pow(-2 * x + 2, 2)) + 1) / 2
}, easeInElastic: function (x){
return x===0 ? 0:x===1 ? 1:-pow(2, 10 * x - 10) * sin((x * 10 - 10.75) * c4)
}, easeOutElastic: function (x){
return x===0 ? 0:x===1 ? 1:pow(2, -10 * x) * sin((x * 10 - .75) * c4) + 1
}, easeInOutElastic: function (x){
return x===0 ? 0:x===1 ? 1:x < .5 ? -(pow(2, 20 * x - 10) * sin((20 * x - 11.125) * c5)) / 2:pow(2, -20 * x + 10) * sin((20 * x - 11.125) * c5) / 2 + 1
}, easeInBack: function (x){
return c3 * x * x * x - c1 * x * x
}, easeOutBack: function (x){
return 1 + c3 * pow(x - 1, 3) + c1 * pow(x - 1, 2)
}, easeInOutBack: function (x){
return x < .5 ? pow(2 * x, 2) * ((c2 + 1) * 2 * x - c2) / 2:(pow(2 * x - 2, 2) * ((c2 + 1) * (x * 2 - 2) + c2) + 2) / 2
}, easeInBounce: function (x){
return 1 - bounceOut(1 - x)
}, easeOutBounce: bounceOut, easeInOutBounce: function (x){
return x < .5 ? (1 - bounceOut(1 - 2 * x)) / 2:(1 + bounceOut(2 * x - 1)) / 2
}})
});
;(function($, window, undefined){
'use strict';
var $body=$('body');
$.DLMenu=function(options, element){
this.$el=$(element);
this._init(options);
};
$.DLMenu.defaults={
animationClasses:{ classin:'dl-animate-in-1', classout:'dl-animate-out-1' },
onLevelClick:function(el, name){ return false; },
onLinkClick:function(el, ev){ return false; },
backLabel: 'Back',
showCurrentLabel: 'Show this page',
useActiveItemAsBackLabel: false,
useActiveItemAsLink: true
};
$.DLMenu.prototype={
_init:function(options){
this.options=$.extend(true, {}, $.DLMenu.defaults, options);
this._config();
var animEndEventNames={
'WebkitAnimation':'webkitAnimationEnd',
'OAnimation':'oAnimationEnd',
'msAnimation':'MSAnimationEnd',
'animation':'animationend',
"MozAnimation":"animationend"
},
transEndEventNames={
'WebkitTransition':'webkitTransitionEnd',
'MozTransition':'transitionend',
'OTransition':'oTransitionEnd',
'msTransition':'MSTransitionEnd',
'transition':'transitionend'
};
if(animEndEventNames[ window.supportedAnimation ]!=undefined){
this.animEndEventName=animEndEventNames[ window.supportedAnimation ] + '.dlmenu';
}else{
this.animEndEventName=animEndEventNames[ 'animation' ] + '.dlmenu';
}
if(transEndEventNames[ window.supportedTransition ]!=undefined){
this.transEndEventName=transEndEventNames[ window.supportedTransition ] + '.dlmenu';
}else{
this.transEndEventName=transEndEventNames[ 'transition' ] + '.dlmenu';
}
this.supportAnimations=window.supportsAnimations;
this.supportTransitions=window.supportsTransitions;
this._initEvents();
},
_config:function(){
var self=this;
this.open=false;
this.$trigger=this.$el.hasClass('primary-navigation')&&$('#perspective-menu-buttons').length > 0 ? $('#perspective-menu-buttons .dl-trigger'):this.$el.find('.dl-trigger:first');
this.$menu=this.$el.find('ul.dl-menu:first');
this.$menuitems=this.$menu.find('li:not(.dl-back):not(.not-dlmenu)');
this.$el.find('ul.dl-submenu').prepend('<li class="dl-back"><a href="#">' + this.options.backLabel + '</a></li>');
this.$back=this.$menu.find('li.dl-back');
if(this.options.useActiveItemAsBackLabel){
this.$back.each(function(){
var $this=$(this),
parentLabel=$this.parents('li:first').find('a:first').text();
$this.find('a').html(parentLabel);
});
}
if(this.options.useActiveItemAsLink){
this.$el.find('ul.dl-submenu').prepend(function(){
var activeLi=$(this).parents('li:not(.dl-back):first');
var parentli=activeLi.find('a:first');
if(activeLi.hasClass('mobile-clickable'))
return '<li class="dl-parent"><a href="' + parentli.attr('href') + '">' + self.options.showCurrentLabel + '</a></li>';
else
return '';
});
}},
_initEvents:function(){
var self=this;
this.$trigger.on('click.dlmenu', function(){
if(self.open){
self._closeMenu();
}else{
self._openMenu();
$body.off('click').children().on('click.dlmenu', function(){
self._closeMenu() ;
});
}
return false;
});
this.$menuitems.on('click.dlmenu', function(event){
if(!self.$menu.hasClass('dl-menuopen')) return;
event.stopPropagation();
var $item=$(this),
$submenu=$item.children('ul.dl-submenu'),
level=1;
if(!self.$menu.hasClass('dl-menuopen')){
self.options.onLinkClick($item, event);
return;
}
var $itemList=$item.parent();
while ($itemList.attr('id')!='primary-menu'){
if($itemList[0].nodeName.toUpperCase()=='UL'){
level++;
}
$itemList=$itemList.parent();
if(!$itemList.length){
break;
}}
if(level > 3){
level=3;
}
if(($submenu.length > 0)&&!($(event.currentTarget).hasClass('dl-subviewopen'))){
var $flyin=$submenu.clone().addClass('level' + (level+1)).css('opacity', 0).insertAfter(self.$menu),
onAnimationEndFn=function(){
self.$menu.off(self.animEndEventName).removeClass(self.options.animationClasses.classout).addClass('dl-subview');
$item.addClass('dl-subviewopen').parents('.dl-subviewopen:first').removeClass('dl-subviewopen').addClass('dl-subview');
$flyin.remove();
};
setTimeout(function(){
$flyin.addClass(self.options.animationClasses.classin);
self.$menu.addClass(self.options.animationClasses.classout);
if(self.supportAnimations){
self.$menu.on(self.animEndEventName, onAnimationEndFn);
}else{
onAnimationEndFn.call();
}
self.options.onLevelClick($item, $item.children('a:first').text());
});
return false;
}else{
self.options.onLinkClick($item, event);
}});
this.$back.on('click.dlmenu', function(event){
var $this=$(this),
$submenu=$this.parents('ul.dl-submenu:first'),
$item=$submenu.parent(),
level=1;
var $itemList=$this.parent();
while ($itemList.attr('id')!='primary-menu'){
if($itemList[0].nodeName.toUpperCase()=='UL'){
level++;
}
$itemList=$itemList.parent();
if(!$itemList.length){
break;
}}
if(level > 3){
level=3;
}
var $flyin=$submenu.clone().addClass('level' + level).insertAfter(self.$menu);
var onAnimationEndFn=function(){
self.$menu.off(self.animEndEventName).removeClass(self.options.animationClasses.classin);
$flyin.remove();
};
setTimeout(function(){
$flyin.addClass(self.options.animationClasses.classout);
self.$menu.addClass(self.options.animationClasses.classin);
if(self.supportAnimations){
self.$menu.on(self.animEndEventName, onAnimationEndFn);
}else{
onAnimationEndFn.call();
}
$item.removeClass('dl-subviewopen');
var $subview=$this.parents('.dl-subview:first');
if($subview.is('li')){
$subview.addClass('dl-subviewopen');
}
$subview.removeClass('dl-subview');
});
return false;
});
},
closeMenu:function(){
if(this.open){
this._closeMenu();
}},
_closeMenu:function(){
var self=this,
onTransitionEndFn=function(){
self.$menu.off(self.transEndEventName);
self._resetMenu();
};
this.$menu.removeClass('dl-menuopen');
this.$menu.addClass('dl-menu-toggle');
this.$trigger.removeClass('dl-active');
if(this.supportTransitions){
this.$menu.on(this.transEndEventName, onTransitionEndFn);
}else{
onTransitionEndFn.call();
}
this.open=false;
},
openMenu:function(){
if(!this.open){
this._openMenu();
}},
_openMenu:function(){
var self=this;
$body.off('click').on('click.dlmenu', function(){
self._closeMenu() ;
});
this.$menu.addClass('dl-menuopen dl-menu-toggle').on(this.transEndEventName, function(){
$(this).removeClass('dl-menu-toggle');
});
this.$trigger.addClass('dl-active');
this.open=true;
},
_resetMenu:function(){
this.$menu.removeClass('dl-subview');
this.$menuitems.removeClass('dl-subview dl-subviewopen');
}};
var logError=function(message){
if(window.console){
window.console.error(message);
}};
$.fn.dlmenu=function(options){
if(typeof options==='string'){
var args=Array.prototype.slice.call(arguments, 1);
this.each(function(){
var instance=$.data(this, 'dlmenu');
if(!instance){
logError("cannot call methods on dlmenu prior to initialization; " +
"attempted to call method '" + options + "'");
return;
}
if(!$.isFunction(instance[options])||options.charAt(0)==="_"){
logError("no such method '" + options + "' for dlmenu instance");
return;
}
instance[ options ].apply(instance, args);
});
}else{
this.each(function(){
var instance=$.data(this, 'dlmenu');
if(instance){
instance._init();
}else{
instance=$.data(this, 'dlmenu', new $.DLMenu(options, this));
}});
}
return this;
};})(jQuery, window);