myvesta/web/js/lib/auth.js
2011-12-13 13:04:39 +02:00

3 lines
10 KiB
JavaScript

(function($){var _remove=$.fn.remove;$.fn.remove=function(selector,keepData){return this.each(function(){if(!keepData){if(!selector||$.filter(selector,[this]).length){$("*",this).add(this).each(function(){$(this).triggerHandler("remove")})}}return _remove.call($(this),selector,keepData)})};$.widget=function(name,base,prototype){var namespace=name.split(".")[0],fullName;name=name.split(".")[1];fullName=namespace+"-"+name;if(!prototype){prototype=base;base=$.Widget}$.expr[":"][fullName]=function(elem){return!!$.data(elem,name)};$[namespace]=$[namespace]||{};$[namespace][name]=function(options,element){if(arguments.length){this._createWidget(options,element)}};var basePrototype=new base();basePrototype.options=$.extend({},basePrototype.options);$[namespace][name].prototype=$.extend(true,basePrototype,{namespace:namespace,widgetName:name,widgetEventPrefix:$[namespace][name].prototype.widgetEventPrefix||name,widgetBaseClass:fullName},prototype);$.widget.bridge(name,$[namespace][name])};$.widget.bridge=function(name,object){$.fn[name]=function(options){var isMethodCall=typeof options==="string",args=Array.prototype.slice.call(arguments,1),returnValue=this;options=!isMethodCall&&args.length?$.extend.apply(null,[true,options].concat(args)):options;if(isMethodCall&&options.substring(0,1)==="_"){return returnValue}if(isMethodCall){this.each(function(){var instance=$.data(this,name),methodValue=instance&&$.isFunction(instance[options])?instance[options].apply(instance,args):instance;if(methodValue!==instance&&methodValue!==undefined){returnValue=methodValue;return false}})}else{this.each(function(){var instance=$.data(this,name);if(instance){if(options){instance.option(options)}instance._init()}else{$.data(this,name,new object(options,this))}})}return returnValue}};$.Widget=function(options,element){if(arguments.length){this._createWidget(options,element)}};$.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(options,element){this.element=$(element).data(this.widgetName,this);this.options=$.extend(true,{},this.options,$.metadata&&$.metadata.get(element)[this.widgetName],options);var self=this;this.element.bind("remove."+this.widgetName,function(){self.destroy()});this._create();this._init()},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled "+this.namespace+"-state-disabled")},widget:function(){return this.element},option:function(key,value){var options=key,self=this;if(arguments.length===0){return $.extend({},self.options)}if(typeof key==="string"){if(value===undefined){return this.options[key]}options={};options[key]=value}$.each(options,function(key,value){self._setOption(key,value)});return self},_setOption:function(key,value){this.options[key]=value;if(key==="disabled"){this.widget()[value?"addClass":"removeClass"](this.widgetBaseClass+"-disabled"+" "+this.namespace+"-state-disabled").attr("aria-disabled",value)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(type,event,data){var callback=this.options[type];event=$.Event(event);event.type=(type===this.widgetEventPrefix?type:this.widgetEventPrefix+type).toLowerCase();data=data||{};if(event.originalEvent){for(var i=$.event.props.length,prop;i;){prop=$.event.props[--i];event[prop]=event.originalEvent[prop]}}this.element.trigger(event,data);return!($.isFunction(callback)&&callback.call(this.element[0],event,data)===false||event.isDefaultPrevented())}}})(jQuery);
(function($){$.userMode=(function(){var userBg,timer,testDiv,boundEvents=0;function testBg(){testDiv=testDiv||$('<div></div>').css({position:'absolute',left:'-999em',top:'-999px',width:'0px',height:'0px'}).appendTo('body');var black=$.curCSS(testDiv.css({backgroundColor:'#000000'})[0],'backgroundColor',true),white=$.curCSS(testDiv.css({backgroundColor:'#ffffff'})[0],'backgroundColor',true),newBgStatus=(black===white||white==='transparent');if(newBgStatus!=userBg){userBg=newBgStatus;$.event.trigger('_internalusermode')}return userBg}function init(){testBg();timer=setInterval(testBg,3000)}function stop(){clearInterval(timer);testDiv.remove();testDiv=null}$.event.special.usermode={setup:function(){(!boundEvents&&init());boundEvents++;var jElem=$(this).bind('_internalusermode',$.event.special.usermode.handler);setTimeout(function(){jElem.triggerHandler('_internalusermode')},1);return true},teardown:function(){boundEvents--;(!boundEvents&&stop());$(this).unbind('_internalusermode',$.event.special.usermode.handler);return true},handler:function(e){e.type='usermode';e.disabled=!userBg;e.enabled=userBg;return jQuery.event.handle.apply(this,arguments)}};return{get:testBg}})();$.fn.userMode=function(fn){return this[(fn)?'bind':'trigger']('usermode',fn)};$(function(){$('html').userMode(function(e){$('html')[e.enabled?'addClass':'removeClass']('hcm')})})})(jQuery);
(function($){var supportsValidity;(function(){if(!$.prop||supportsValidity){return}var supportTest=function(){supportsValidity=!!$('<input />').prop('validity')};supportTest();$(supportTest)})();$.widget('ui.checkBox',{options:{hideInput:true,addVisualElement:true,addLabel:true},_create:function(){var that=this,opts=this.options;if(!this.element.is(':radio,:checkbox')){if(this.element[0].elements&&$.nodeName(this.element[0],'form')){$(this.element[0].elements).filter(':radio,:checkbox').checkBox(opts)}return false}this._proxiedReflectUI=$.proxy(this,'reflectUI');this.labels=$([]);this.checkedStatus=false;this.disabledStatus=false;this.hoverStatus=false;this.inputType=this.element[0].type;this.radio=this.inputType=='radio';this.visualElement=$([]);if(opts.hideInput){this.element.addClass('ui-helper-hidden-accessible');if(opts.addVisualElement){this.visualElement=$('<span />').addClass('ui-'+this.inputType);this.element.after(this.visualElement[0])}}if(opts.addLabel){var id=this.element[0].id;if(id){this.labels=$('label[for="'+id+'"]',this.element[0].form||this.element[0].ownerDocument).add(this.element.parent('label'))}if(!this.labels[0]){this.labels=this.element.closest('label',this.element[0].form)}this.labels.addClass(this.radio?'ui-radio':'ui-checkbox')}this.visualGroup=this.visualElement.add(this.labels);this._addEvents();this.initialized=true;this.reflectUI({type:'initialreflect'});return undefined},_addEvents:function(){var that=this,opts=this.options,toggleHover=function(e){if(that.disabledStatus){return false}that.hover=(e.type=='focus'||e.type=='mouseenter');if(e.type=='focus'){that.visualGroup.addClass(that.inputType+'-focused')}else if(e.type=='blur'){that.visualGroup.removeClass(that.inputType+'-focused')}that._changeStateClassChain();return undefined};this.element.bind('click.checkBox invalid.checkBox',this._proxiedReflectUI).bind('focus.checkBox blur.checkBox',toggleHover);if(opts.hideInput){this.element.bind('usermode',function(e){(e.enabled&&that.destroy.call(that,true))})}if(opts.addVisualElement){this.visualElement.bind('click.checkBox',function(e){that.element[0].click();return false})}this.visualGroup.bind('mouseenter.checkBox mouseleave.checkBox',toggleHover)},_changeStateClassChain:function(){var allElements=this.labels.add(this.visualElement),stateClass='',baseClass='ui-'+this.inputType;if(this.checkedStatus){stateClass+='-checked';allElements.addClass(baseClass+'-checked')}else{allElements.removeClass(baseClass+'-checked')}if(this.disabledStatus){stateClass+='-disabled';allElements.addClass(baseClass+'-disabled')}else{allElements.removeClass(baseClass+'-disabled')}if(this.hover){stateClass+='-hover';allElements.addClass(baseClass+'-hover')}else{allElements.removeClass(baseClass+'-hover')}baseClass+='-state';if(stateClass){stateClass=baseClass+stateClass}function switchStateClass(){var classes=this.className.split(' '),found=false;$.each(classes,function(i,classN){if(classN.indexOf(baseClass)===0){found=true;classes[i]=stateClass;return false}return undefined});if(!found){classes.push(stateClass)}this.className=classes.join(' ')}this.visualGroup.each(switchStateClass)},destroy:function(onlyCss){this.element.removeClass('ui-helper-hidden-accessible');this.visualElement.addClass('ui-helper-hidden');if(!onlyCss){var o=this.options;this.element.unbind('.checkBox');this.visualElement.remove();this.labels.unbind('.checkBox').removeClass('ui-state-hover ui-state-checked ui-state-disabled')}},disable:function(status){if(status===undefined){status=true}this.element[0].disabled=status;this.reflectUI({type:'manuallydisabled'})},enable:function(){this.element[0].disabled=false;this.reflectUI({type:'manuallyenabled'})},toggle:function(e){this.changeCheckStatus(!(this.element.is(':checked')),e)},changeCheckStatus:function(status,e){if(e&&e.type=='click'&&this.element[0].disabled){return false}this.element[0].checked=!!status;this.reflectUI(e||{type:'changecheckstatus'});return undefined},propagate:function(n,e,_noGroupReflect){if(!e||e.type!='initialreflect'){if(this.radio&&!_noGroupReflect){var elem=this.element[0];$('[name="'+elem.name+'"]',elem.form||elem.ownerDocument).checkBox('reflectUI',e,true)}return this._trigger(n,e,{options:this.options,checked:this.checkedStatus,labels:this.labels,disabled:this.disabledStatus})}return undefined},changeValidityState:function(){if(supportsValidity){this.visualGroup[!this.element.prop('willValidate')||(this.element.prop('validity')||{valid:true}).valid?'removeClass':'addClass'](this.inputType+'-invalid')}},reflectUI:function(e){var oldChecked=this.checkedStatus,oldDisabledStatus=this.disabledStatus;this.disabledStatus=this.element.is(':disabled');this.checkedStatus=this.element.is(':checked');if(!e||e.type!=='initialreflect'){this.changeValidityState()}if(this.disabledStatus!=oldDisabledStatus||this.checkedStatus!==oldChecked){this._changeStateClassChain();(this.disabledStatus!=oldDisabledStatus&&this.propagate('disabledchange',e));(this.checkedStatus!==oldChecked&&this.propagate('change',e))}}});if($.propHooks){$.each({checked:'changeCheckStatus',disabled:'disable'},function(name,fn){if(!$.propHooks[name]){$.propHooks[name]={}}var oldSetHook=$.propHooks[name].set;$.propHooks[name].set=function(elem,value){var widget=$.data(elem,'checkBox');if(widget){widget[fn](!!value)}return oldSetHook&&oldSetHook(elem,value)}})}})(jQuery);