var TimeSpinner=new Class({Implements:[Events,Options],version:0.4,options:{increment:15,separator:":",range:{low:-1,high:-1},delay:200,alarm:[],doAlarm:Class.empty},initialize:function(e,c,b){if(!e){return false}if($defined(c)){this.setOptions(c)}this.timespinner=e;this.timespinner.readOnly=true;this.date=new Date();if($defined(b)){if(b instanceof Date){this.date=b}else{var a=b%60;this.date.setMinutes(a);this.date.setHours((b-a)/60)}}this.doaction="";var d=new Element("button",{type:"button"}).addClass("timespinner_plus").injectAfter(e);d.addEvent("mousedown",function(){this.doStart("inc")}.pass("inc",this));d.addEvent("mouseup",function(){this.doStop()}.pass("",this));d=new Element("button",{type:"button"}).addClass("timespinner_minus").injectAfter(e);d.addEvent("mousedown",function(){this.doStart("dec")}.pass("dec",this));d.addEvent("mouseup",function(){this.doStop()}.pass("",this));this.fixTime();this.addEvent("doclick",function(){switch(this.doaction){case"inc":this.incTime();break;case"dec":this.decTime();break;case"cancel":this.doaction="";return;default:return}this.fireEvent("doclick","",this.options.delay)});this.addEvent("doAlarm",this.options.doAlarm)},doStart:function(a){this.doaction=a;this.fireEvent("doclick","",0)},doStop:function(){this.doaction="cancel"},setTime:function(a){if(a instanceof Date){this.date=a}else{this.date.setTime(a)}this.fixTime()},getTime:function(){return(this.date)},setInc:function(a){this.options.increment=a;this.fixTime()},getInc:function(a){return(this.options.increment)},fixTime:function(){var a=this.date.getMinutes();this.date.setMinutes(a-(a%this.options.increment));if(this.options.range.high>-1){var b=this.date.getHours()*60+this.date.getMinutes();if(b>=this.options.range.high){var d=this.options.range.high%60;this.date.setMinutes(d);this.date.setHours((this.options.range.high-d)/60)}}if(this.options.range.low>-1){var b=this.date.getHours()*60+this.date.getMinutes();if(b<=this.options.range.low){var d=this.options.range.low%60;this.date.setMinutes(d);this.date.setHours((this.options.range.low-d)/60)}}var c=this.date.getHours();a=this.date.getMinutes();this.timespinner.value=(c<10?"0":"")+c+this.options.separator+(a<10?"0":"")+a;var b=this.date.getHours()*60+this.date.getMinutes();this.options.alarm.each(function(e){if(e==b){this.fireEvent("doAlarm",{who:this.timespinner.id,time:e},0)}},this)},incTime:function(a){if($defined(a)==false){a=this.options.increment}this.date.setTime(this.date.getTime()+(a*60000));this.fixTime()},decTime:function(a){if($defined(a)==false){a=this.options.increment}this.date.setTime(this.date.getTime()-(a*60000));this.fixTime()}});TimeSpinner.implement(new Events,new Options);