Spade
Mini Shell
| Directory:~$ /home/lmsyaran/www/j3/modules/mod_vertical_menu/params/offlajnonoff/offlajnonoff/ |
| [Home] [System Details] [Kill Me] |
dojo.declare("OfflajnOnOff", null, {
constructor: function(args) {
dojo.mixin(this,args);
this.w = 26;
this.init();
},
init: function() {
this.switcher = dojo.byId('offlajnonoff' + this.id);
this.input = dojo.byId(this.id);
this.state = parseInt(this.input.value);
this.click = dojo.connect(this.switcher, 'onclick', this,
'controller');
if(this.mode == 'button') {
this.img = dojo.query('.onoffbutton_img', this.switcher);
if(dojo.hasClass(this.switcher, 'selected'))
dojo.style(this.img[0], 'backgroundPosition', '0px
-11px');
} else {
dojo.connect(this.switcher, 'onmousedown', this,
'mousedown');
}
dojo.connect(this.input, 'onchange', this,
'setValue');
},
controller: function() {
if(!this.mode) {
if(this.anim) this.anim.stop();
this.state ? this.setOff() : this.setOn();
} else if(this.mode == "button") {
this.state ? this.setBtnOff() : this.setBtnOn();
}
},
setBtnOn: function() {
dojo.style(this.img[0], 'backgroundPosition', '0px
-11px');
dojo.addClass(this.switcher, 'selected');
this.changeState(1);
},
setBtnOff: function() {
dojo.style(this.img[0], 'backgroundPosition', '0px
0px');
dojo.removeClass(this.switcher, 'selected');
this.changeState(0);
},
setValue: function() {
if(this.state != this.input.value) {
this.controller();
}
},
changeState: function(state){
if(this.state != state){
this.state = state;
this.stateChanged();
}
},
stateChanged: function(){
this.input.value = this.state;
OfflajnFireEvent(this.input, 'change');
},
mousedown: function(e){
this.startState = this.state;
this.move = dojo.connect(document, 'onmousemove', this,
'mousemove');
this.up = dojo.connect(document, 'onmouseup', this,
'mouseup');
this.startX = e.clientX;
},
mousemove: function(e){
var x = e.clientX-this.startX;
if(!this.startState) x-=this.w;
if(x > 0){
x = 0;
this.changeState(1);
}
if(x < -1*this.w){
x = -1*this.w;
this.changeState(0);
}
var str = x+"px 0px";
dojo.style(this.switcher,"backgroundPosition",str);
},
mouseup: function(e){
dojo.disconnect(this.move);
dojo.disconnect(this.up);
},
getBgpos: function() {
var pos = dojo.style(this.switcher, 'backgroundPosition');
if(dojo.isIE <= 8){
pos = dojo.style(this.switcher,
'backgroundPositionX')+' '+dojo.style(this.switcher,
'backgroundPositionY');
}
var bgp = pos.split(' ');
bgp[0] = parseInt(bgp[0]);
return !bgp[0] ? 0 : bgp[0];
},
setOn: function() {
this.changeState(1);
this.anim = new dojo.Animation({
curve: new dojo._Line(this.getBgpos(),0),
node: this.switcher,
onAnimate: function(){
var str = Math.floor(arguments[0])+"px 0px";
dojo.style(this.node,"backgroundPosition",str);
}
}).play();
},
setOff: function() {
this.changeState(0);
this.anim = new dojo.Animation({
curve: new dojo._Line(this.getBgpos(), -1*this.w),
node: this.switcher,
onAnimate: function(){
var str = Math.floor(arguments[0])+"px 0px";
dojo.style(this.node,"backgroundPosition",str);
}
}).play();
}
});