Artem Andreev
15 years ago
9 changed files with 374 additions and 114 deletions
@ -0,0 +1,96 @@ |
|||
document.body.className += ' yui-skin-sam'; |
|||
|
|||
YAHOO.util.Event.onDOMReady(function(){ |
|||
|
|||
var Event = YAHOO.util.Event, |
|||
Dom = YAHOO.util.Dom, |
|||
dialog, calendar; |
|||
|
|||
var showBtn = Dom.get("show"); |
|||
|
|||
Event.on(showBtn, "click", function() { |
|||
|
|||
// Lazy Dialog Creation - Wait to create the Dialog, and setup document click listeners, until the first time the button is clicked.
|
|||
if (!dialog) { |
|||
|
|||
// Hide Calendar if we click anywhere in the document other than the calendar
|
|||
Event.on(document, "click", function(e) { |
|||
var el = Event.getTarget(e); |
|||
var dialogEl = dialog.element; |
|||
if (el != dialogEl && !Dom.isAncestor(dialogEl, el) && el != showBtn && !Dom.isAncestor(showBtn, el)) { |
|||
dialog.hide(); |
|||
} |
|||
}); |
|||
|
|||
function resetHandler() { |
|||
calendar.cfg.setProperty("pagedate", calendar.today); |
|||
calendar.render(); |
|||
} |
|||
|
|||
function closeHandler() { |
|||
dialog.hide(); |
|||
} |
|||
|
|||
dialog = new YAHOO.widget.Dialog("container", { |
|||
visible:false, |
|||
context:["show", "tl", "bl"], |
|||
buttons:[{text: cal_today, handler: resetHandler, isDefault:true}, {text: cal_close, handler: closeHandler}], |
|||
draggable:false, |
|||
close:false |
|||
}); |
|||
dialog.setHeader(''); |
|||
dialog.setBody('<div id="cal"></div>'); |
|||
dialog.render(document.body); |
|||
|
|||
dialog.showEvent.subscribe(function() { |
|||
if (YAHOO.env.ua.ie) { |
|||
// Since we're hiding the table using yui-overlay-hidden, we
|
|||
// want to let the dialog know that the content size has changed, when
|
|||
// shown
|
|||
dialog.fireEvent("changeContent"); |
|||
} |
|||
}); |
|||
} |
|||
|
|||
// Lazy Calendar Creation - Wait to create the Calendar until the first time the button is clicked.
|
|||
if (!calendar) { |
|||
|
|||
calendar = new YAHOO.widget.Calendar("cal", { |
|||
iframe:false, // Turn iframe off, since container has iframe support.
|
|||
hide_blank_weeks:true // Enable, to demonstrate how we handle changing height, using changeContent
|
|||
}); |
|||
|
|||
calendar.cfg.setProperty("start_weekday", cal_start_weekday); |
|||
calendar.cfg.setProperty("MONTHS_LONG", cal_months); |
|||
calendar.cfg.setProperty("WEEKDAYS_SHORT", cal_week_days); |
|||
calendar.select(new Date(cal_cur_date*1000)); |
|||
calendar.render(); |
|||
|
|||
calendar.selectEvent.subscribe(function() { |
|||
if (calendar.getSelectedDates().length > 0) { |
|||
|
|||
Dom.get("current").value = calendar.getSelectedDates()[0] / 1000; |
|||
|
|||
Dom.get("currentdate").submit(); |
|||
} |
|||
dialog.hide(); |
|||
}); |
|||
|
|||
calendar.renderEvent.subscribe(function() { |
|||
// Tell Dialog it's contents have changed, which allows
|
|||
// container to redraw the underlay (for IE6/Safari2)
|
|||
dialog.fireEvent("changeContent"); |
|||
}); |
|||
} |
|||
|
|||
var seldate = calendar.getSelectedDates(); |
|||
|
|||
if (seldate.length > 0) { |
|||
// Set the pagedate to show the selected date if it exists
|
|||
calendar.cfg.setProperty("pagedate", seldate[0]); |
|||
calendar.render(); |
|||
} |
|||
|
|||
dialog.show(); |
|||
}); |
|||
}); |
File diff suppressed because one or more lines are too long
Loading…
Reference in new issue