Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function RangeSelector(product_id) {
- this.product_id = product_id;
- this.start_point = "#from_" + product_id;
- this.end_point = "#to_" + product_id;
- this.cal = new Calendar(1);
- this.cal.events.push(new Event(1,new Date("04/01/2012 13:00"),new Date("04/05/2012 08:00")));
- this.cal.events.push(new Event(1,new Date("04/06/2012 17:00"),new Date("04/07/2012 09:00")));
- this.cal.events.push(new Event(1,new Date("04/29/2012 08:00"),new Date("05/15/2012 14:00")));
- }
- RangeSelector.prototype.build = function() {
- $(this.start_point)
- .attr("readonly", "true")
- .datetimepicker({
- hour: 8,
- minute: 0,
- hourMin: 7,
- hourMax: 18,
- hourGrid: 1,
- showButtonPanel: false,
- numberOfMonths: 3,
- showMinute : false,
- dateFormat : 'dd.mm.yy',
- timeFormat: 'hh:mm',
- showWeek: true,
- weekHeader: "Kw.",
- minDate: Date.today().add(7).hours(),
- maxDate: Date.today().add(1).years(),
- beforeShowDay: this.unavailableFrom,
- onSelect: function(selectedDateTime){
- var endDateTextBox = $(this.end_point);
- var date = Date.parse(selectedDateTime);
- preventTimeOverlappingWithEvents(date,this.start_point);
- var testStartDate = $(this).datetimepicker('getDate');
- if (endDateTextBox.val() != '') {
- var testEndDate = Date.parse(endDateTextBox.val());
- if (testEndDate < testStartDate) {
- $(this.start_point).datetimepicker('setTime', testEndDate);
- show_error();
- }
- else {
- correctMinMaxDateTo(testStartDate);
- }
- }
- else {
- correctMinMaxDateTo(testStartDate);
- }
- }
- });
- $(this.end_point)
- .attr("readonly", "true")
- .datetimepicker({
- dateFormat : 'dd.mm.yy',
- timeFormat: 'hh:mm',
- showMinute : false,
- showButtonPanel: false,
- hour: 8,
- minute: 0,
- hourMin: 7,
- hourMax: 18,
- hourGrid: 1,
- numberOfMonths: 3,
- showWeek: true,
- weekHeader: "Kw.",
- minDate: Date.today().add(0).hours(),
- maxDate: Date.today().add(1).years(),
- beforeShowDay: this.unavailableTo,
- onSelect: function(selectedDateTime){
- var startDateTextBox = $(this.start_point);
- var testEndDate = $(this.end_point).datetimepicker('getDate');
- var date = Date.parse(selectedDateTime);
- preventTimeOverlappingWithEvents(date,this.end_point);
- if (startDateTextBox.val() != '') {
- var testStartDate = Date.parse(startDateTextBox.val());
- if (testStartDate > testEndDate) {
- $(this.end_point).datetimepicker('setTime', testStartDate);
- show_error();
- }
- else {
- correctMinMaxDateFrom(testEndDate);
- }
- }
- else {
- correctMinMaxDateFrom(testEndDate);
- }
- }
- });
- }
- RangeSelector.prototype.unavailable = function(date) {
- result = [true, "green", "Book Now"];
- $.each(this.cal.events, function(key, myEvent) {
- if(myEvent.surrounds(date)) {
- result = [false,"red","Vermietet"];
- }
- if(myEvent.equalsStartDay(date)) {
- result = [true,"equals_start_day","Ab " + myEvent.getStartTime() + " Uhr vermietet"];
- }
- if(myEvent.equalsEndDay(date)) {
- result = [true,"equals_end_day","Bis " + myEvent.getEndTime() + " Uhr vermietet"];
- }
- });
- return result;
- }
- RangeSelector.prototype.unavailableTo = function(date) {
- var start_point = $(this.start_point).datepicker( "getDate" );
- var maxDate = $(this.end_point).datepicker("option","maxDate");
- if (maxDate < date && !date.onSameDay(maxDate)) {
- return [false,"",""];
- }
- if (start_point != null && date < start_point && !date.onSameDay(start_point)) {
- return [false,"",""];
- }
- else {
- return this.unavailable(date);
- }
- }
- RangeSelector.prototype.unavailableFrom = function(date) {
- var end_point = $(this.end_point).datepicker( "getDate" );
- var minDate = $(this.start_point).datepicker("option","minDate");
- if (minDate > date && !date.onSameDay(minDate)) {
- return [false,"",""];
- }
- else if (end_point != null && date > end_point && !date.onSameDay(end_point)) {
- return [false,"",""];
- }
- else {
- return this.unavailable(date);
- }
- }
- RangeSelector.prototype.preventTimeOverlappingWithEvents = function(date, selector) {
- $.each(this.cal.events, function(key, myEvent) {
- if(myEvent.equalsStartDay(date)) {
- if(date > myEvent.start_point) {
- $(selector).datetimepicker('setTime', myEvent.start_point);
- show_error();
- }
- }
- if(myEvent.equalsEndDay(date)) {
- if(date < myEvent.end_point) {
- $(selector).datetimepicker('setTime', myEvent.end_point);
- show_error();
- }
- }
- });
- }
- RangeSelector.prototype.correctMinMaxDateTo = function(date) {
- var nextEvent = this.cal.getNextEvent(date);
- if (nextEvent != null) {
- $(this.end_point).datetimepicker('option', 'maxDate', nextEvent.start_point );
- }
- $(this.end_point).datetimepicker('option', 'minDate', date );
- }
- RangeSelector.prototype.correctMinMaxDateFrom = function(date) {
- var prevEvent = this.cal.getPrevEvent(date);
- if (prevEvent != null) {
- $(this.start_point).datetimepicker('option', 'minDate', prevEvent.end_point );
- }
- $(this.start_point).datetimepicker('option', 'maxDate', date );
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement