/* Copyright (c) 2010, Yahoo! Inc. All rights reserved. Code licensed under the BSD License: http://developer.yahoo.com/yui/license.html version: 3.3.0 build: 3167 */ YUI.add('dial',function(Y){var supportsVML=false,testVMLNode;if(Y.UA.ie&&Y.UA.ie<9){supportsVML=true;} var Lang=Y.Lang,Widget=Y.Widget,Node=Y.Node;function Dial(config){Dial.superclass.constructor.apply(this,arguments);} Dial.NAME="dial";Dial.ATTRS={min:{value:-220},max:{value:220},diameter:{value:100},value:{value:0,validator:function(val){return this._validateValue(val);}},minorStep:{value:1},majorStep:{value:10},stepsPerRev:{value:100},decimalPlaces:{value:0},strings:{valueFn:function(){return Y.Intl.get('dial');}},handleDist:{value:0.75}};function makeClassName(str){return Y.ClassNameManager.getClassName(Dial.NAME,str);} Dial.CSS_CLASSES={label:makeClassName("label"),labelString:makeClassName("label-string"),valueString:makeClassName("value-string"),northMark:makeClassName("north-mark"),ring:makeClassName('ring'),ringVml:makeClassName('ring-vml'),marker:makeClassName("marker"),markerUser:makeClassName("marker-user"),markerUserVml:makeClassName("marker-user-vml"),centerButton:makeClassName("center-button"),centerButtonVml:makeClassName('center-button-vml'),resetString:makeClassName("reset-str"),handle:makeClassName("handle"),handleUser:makeClassName("handle-user"),handleUserVml:makeClassName("handle-user-vml"),markerHidden:makeClassName("marker-hidden"),dragging:Y.ClassNameManager.getClassName("dd-dragging")};var labelId=Dial.CSS_CLASSES.label+Y.guid();Dial.LABEL_TEMPLATE='
{label}
';if(supportsVML===false){Dial.RING_TEMPLATE='
';Dial.MARKER_TEMPLATE='
';Dial.CENTER_BUTTON_TEMPLATE='
{resetStr}
';Dial.HANDLE_TEMPLATE='
';}else{Dial.RING_TEMPLATE='
'+'
'+''+'
'+'';Dial.MARKER_TEMPLATE='
'+'
'+''+''+''+'
'+'
'+'';Dial.CENTER_BUTTON_TEMPLATE='
'+''+''+''+''+'
{resetStr}
'+'
'+'';Dial.HANDLE_TEMPLATE='
'+'
'+''+''+''+'
'+'
'+'';} Y.extend(Dial,Widget,{renderUI:function(){this._renderLabel();this._renderRing();this._renderMarker();this._renderCenterButton();this._renderHandle();if(supportsVML){this._setVMLSizes();} this._setBorderRadius();this.contentBox=this.get("contentBox");this._centerX=this.get('diameter')/ 2;this._centerY=this.get('diameter')/ 2;this._handleDist=this._centerX*this.get('handleDist');this._originalValue=this.get('value');this._timesWrapped=0;this._angle=this._getAngleFromValue(this.get('value'));this._setTimesWrapedFromValue(this.get('value'));this._handleUserNode.set('aria-valuemin',this.get('min'));this._handleUserNode.set('aria-valuemax',this.get('max'));},_setBorderRadius:function(){var dia=this.get('diameter');this._ringNode.setStyle('WebkitBorderRadius',Math.floor(dia*0.5)+'px');this._handleUserNode.setStyle('WebkitBorderRadius',Math.floor(dia*0.1)+'px');this._markerUserNode.setStyle('WebkitBorderRadius',Math.floor(dia*0.05)+'px');this._centerButtonNode.setStyle('WebkitBorderRadius',Math.floor(dia*0.25)+'px');},bindUI:function(){this.after("valueChange",this._afterValueChange);var boundingBox=this.get("boundingBox"),keyEventSpec=(!Y.UA.opera)?"down:":"press:",keyLeftRightSpec=(!Y.UA.opera)?"down:":"press:";keyEventSpec+="38, 40, 33, 34, 35, 36";keyLeftRightSpec+="37, 39";Y.on("key",Y.bind(this._onDirectionKey,this),boundingBox,keyEventSpec);Y.on("key",Y.bind(this._onLeftRightKey,this),boundingBox,keyLeftRightSpec);Y.on('mouseenter',Y.bind(this._dialCenterOver,this),this._centerButtonNode);Y.on('mouseleave',Y.bind(this._dialCenterOut,this),this._centerButtonNode);Y.on('click',Y.bind(this._resetDial,this),this._centerButtonNode);Y.on('mousedown',Y.bind(function(){this._handleUserNode.focus();},this),this._handleNode);var dd1=new Y.DD.Drag({node:this._handleNode,on:{'drag:drag':Y.bind(this._handleDrag,this),'drag:start':Y.bind(this._handleDragStart,this),'drag:end':Y.bind(this._handleDragEnd,this)}});},_setTimesWrapedFromValue:function(val){if(val%this.get('stepsPerRev')===0){this._timesWrapped=(val / this.get('stepsPerRev'))-1;}else{this._timesWrapped=Math.floor(val / this.get('stepsPerRev'));}},_dialCenterOver:function(e){this._resetString.setContent(Y.substitute('{resetStr}',this.get('strings')));},_dialCenterOut:function(e){this._resetString.setContent('');},_handleDrag:function(e){var handleCenterX=e.pageX+this._handleUserNodeRadius,handleCenterY=e.pageY+this._handleUserNodeRadius;var ang=Math.atan((this._centerYOnPage-handleCenterY)/(this._centerXOnPage-handleCenterX))*(180 / Math.PI),deltaX=(this._centerXOnPage-handleCenterX);if(deltaX<0){ang=(ang+90);}else{ang=(ang-90);} if(handleCenterYthis._centerXOnPage)){this._timesWrapped=(this._timesWrapped+1);}else if((this._prevX>this._centerXOnPage)&&(handleCenterX<=this._centerXOnPage)){this._timesWrapped=(this._timesWrapped-1);}} this._prevX=handleCenterX;var newValue=this._getValueFromAngle(ang);if((newValue>this.get('min'))&&(newValuethis.get('max')){this.set('value',this.get('max'));}else if(newValue=min&&val<=max);}});Y.Dial=Dial;},'3.3.0',{requires:['widget','dd-drag','substitute','event-mouseenter','transition','intl'],skinnable:true,lang:['en','es']});