87,997
社区成员




this.holder.setStyles({'width':this.options.clockSize.width, 'height':this.options.clockSize.height});
var img = new Element("img", {'src':this.options.imagesPath+"/"+this.options.faceImage,
'styles':{'position':'absolute',
'z-index':21000}});
this.holder.adopt(img);
if (!this.options.visible){
if ((window.ie) && (!window.ie7)){
var iframe = new Element("iframe", {'src':'about:Blank',
'styles':{'width':this.options.clockSize.width,
'position':'absolute',
'z-index':20000,
'height':this.options.clockSize.height},
'frameborder':0
});
this.holder.adopt(iframe);
}
this.holder.setStyles({
'position':'absolute',
'z-index':25000,
'opacity':0
});
if ($defined(this.toggler)){
this.toggler.addEvent("click", function(e){
var e = new Event(e);
if (this.holder.getStyle('opacity') == 0) this.openTimePicker();
else this.closeTimePicker();
e.stop();
}.bind(this));
}
var cls = new Element("img", {'src':this.options.imagesPath+"/"+this.options.closeImage,
'styles':{'position':'absolute',
'z-index':26000,
'right':0,
'cursor':'pointer'}});
this.holder.adopt(cls);
cls.addEvent("click", function(){
this.closeTimePicker();
}.bind(this));
}
this.minuteHand = new Element("div", {styles:{'marginTop':((this.options.clockSize.height - this.options.minuteHandSize.height)/2).toInt(),
'marginLeft':((this.options.clockSize.width - this.options.minuteHandSize.width)/2).toInt(),
'width':this.options.minuteHandSize.width,
'height':this.options.minuteHandSize.height,
'position':'absolute',
'z-index':22000,
'background':'url('+this.options.imagesPath+"/"+this.options.minuteHandImage+') no-repeat top left'}});
this.holder.adopt(this.minuteHand);
this.secondHand = new Element("div", {styles:{'marginTop':((this.options.clockSize.height - this.options.secondHandSize.height)/2).toInt(),
'marginLeft':((this.options.clockSize.width - this.options.secondHandSize.width)/2).toInt(),
'width':this.options.secondHandSize.width,
'height':this.options.secondHandSize.height,
'position':'absolute',
'z-index':21999,
'background':'url('+this.options.imagesPath+"/"+this.options.secondHandImage+') no-repeat top left'}});
this.holder.adopt(this.secondHand);//根据秒针的位置定位时间
this.hourHand = new Element("div", {styles:{'marginTop':((this.options.clockSize.height - this.options.hourHandSize.height)/2).toInt(),
'marginLeft':((this.options.clockSize.width - this.options.hourHandSize.width)/2).toInt(),
'width':this.options.hourHandSize.width,
'height':this.options.hourHandSize.height,
'position':'absolute',
'z-index':23000,
'background':'url('+this.options.imagesPath+"/"+this.options.hourHandImage+') no-repeat top left'}});
this.holder.adopt(this.hourHand);
var c_img = new Element("img", {'src':this.options.imagesPath+"/"+this.options.centerImage,
'styles':{'position':'absolute',
'z-index':24000,
'marginTop':((this.options.clockSize.height - this.options.centerSize.height)/2).toInt(),
'marginLeft':((this.options.clockSize.width - this.options.centerSize.width)/2).toInt()}});
this.holder.adopt(c_img);
this.ampm = new Element ("a", {'styles':this.options.ampmStyles,
'href':'#'});
this.updateAmPm();
this.ampm.setStyles({'position':'absolute',
'z-index':25000,
'display':'block',
'marginTop':((this.options.clockSize.height + (this.options.clockSize.height/4))/2).toInt(),
'marginLeft':((this.options.clockSize.width-20)/2).toInt()});
this.holder.adopt(this.ampm);
this.ampm.addEvent("click", function(e){
var e = new Event(e);
e.stop();
this.time.hour = ((this.time.hour + 12) %24);
this.updateAmPm();
this.updateField();
this.fireEvent("onChange");
}.bind(this));
this.moveHands();
this.holder.addEvent("mousedown", function(e){
var e = new Event(e);
var coord = this.holder.getCoordinates();
var ang = this.clickAngle({x:e.client.x, y:e.client.y}, coord);
var h_ang = (this.time.hour%12) * 30;
var m_ang = this.time.minute * 6;
var s_ang = this.time.second * 6;
this.moveEl['move'] = true;
this.moveEl['coord'] = coord;
/*
if (Math.abs(ang - m_ang) < Math.abs(ang - h_ang))
if(e.target.getStyle("backgroundImage").indexOf(this.options.minuteHandImage) !=-1)
this.moveEl['el'] = "minute";
else
this.moveEl['el'] = "second";
else if(Math.abs(ang - m_ang) > Math.abs(ang - h_ang))
this.moveEl['el'] = "hour";
*/
if(Math.abs(ang - m_ang) > Math.abs(ang - h_ang))
this.moveEl['el'] = "hour";
else if (Math.abs(ang - m_ang) < Math.abs(ang - h_ang))
if(e.target.getStyle("backgroundImage").indexOf(this.options.minuteHandImage) !=-1)
this.moveEl['el'] = "minute";
else
this.moveEl['el'] = "second";
else {
if (e.target.getStyle("backgroundImage").indexOf(this.options.hourHandImage) != -1)
this.moveEl['el'] = "hour";
else if(e.target.getStyle("backgroundImage").indexOf(this.options.minuteHandImage) !=-1)
this.moveEl['el'] = "minute";
else
this.moveEl['el'] = "second";
}
}.bind(this));
this.holder.addEvent("mouseup", function(){
this.moveEl = {};
this.moveEl['move'] = false;
}.bind(this));
this.holder.addEvent("mousemove", function(e){
if (this.moveEl['move']){
var e = new Event(e);
var add;
var ang = this.clickAngle({x:e.client.x, y:e.client.y}, this.moveEl.coord);
if (this.moveEl.el == "hour") var ang_by = 30;
else var ang_by = 6;
if (this.moveEl.el == "hour"){
var h = (ang/ang_by).toInt();
if (!isNaN(h))
this.time.hour = h;
if (this.ampm.innerHTML == this.options.lang.pm)
this.time.hour = (this.time.hour+12)%24;
}
else{
var m = (ang/ang_by).toInt();
if (!isNaN(m))
this.time.minute = m;
}
this.moveHands();
this.updateField();
this.fireEvent("onChange");
}
}.bind(this));
_all_page_timepickers.push(this);
},
updateAmPm: function() {
if (this.time.hour < 12) this.ampm.setHTML(this.options.lang.am);
else this.ampm.setHTML(this.options.lang.pm);
},
moveHands: function(){
try {
this.hourHand.setStyle("backgroundPosition", (((this.time.hour % 12) * this.options.hourHandSize.width) * -1));
this.minuteHand.setStyle("backgroundPosition", ((this.time.minute * this.options.minuteHandSize.width) * -1));
this.secondHand.setStyle("backgroundPosition", ((this.time.second * this.options.secondHandSize.width) * -1));
}
catch(e){}
},
clickAngle: function(pnt, coord){
var c_x = coord.width/2;
var c_y = coord.height/2;
var x = pnt.x + window.getScrollLeft() - coord.left;
var y = pnt.y + window.getScrollTop() - coord.top;
var t_x = c_x;
var t_y = y;
var CA = t_x - x;
var CO = t_y - c_y;
var AO = Math.sqrt(Math.pow(CA, 2) + Math.pow(CO, 2));
var ang = Math.round((Math.acos((Math.pow(Math.abs(CA), 2) - Math.pow(Math.abs(AO), 2) - Math.pow(CO, 2))/(2 * CO * AO))) * 180/Math.PI);
if (x < c_x) ang = 360 - ang;
return ang;
},