/**
 *  Should be included whenever we use the booking form.
 *  Not calling $javascript->link from the element file because we may be loading
 *  it via AJAX.
 */

var dCal;

var srCalendar = Class.create({
    initialize: function(event, options)
    {
        this.options = Object.extend({dateErrorMsg: 'Start date not during season'},
                                     options || {});
        // Set up our calendar if we haven't already
        if(!dCal) {
            try {
                dCal = new dedokoCal();
            } catch(e) {
                alert(e.message);
            }
            dCal.trackMouse = false;
        	dCal.makeCalendar();
            // Define callback to update our form
            dCal.callback = function(ts) {
                var objDate = new Date(ts * 1000);
                var str_day = objDate.getDate();
                with($('OrderStartDateDay')) {
                    for(var i=0; i<options.length; i++) {
                        if(options[i].value == str_day) {
                            selectedIndex = i;
                            break;
                        }
                    }
                }
                var str_mth = objDate.getFullYear() + '-' + (objDate.getMonth() < 9 ? '0' : '') + (objDate.getMonth() + 1);
                with($('OrderStartDateMonth')) {
                    for(var i=0; i<options.length; i++) {
                        if(options[i].value == str_mth) {
                            selectedIndex = i;
                            return;
                        }
                    }
                    alert(this.options.dateErrorMsg);
                }
            }.bind(this);
        }
        // Position the calendar
        dCal.x_orig = Event.pointerX(event);
        dCal.y_orig = Event.pointerY(event);
        // And open it for this operation
        var str_date = '';
        with($('OrderStartDateMonth'))
        {
            str_date += options[selectedIndex].value + "-";
        }
        with($('OrderStartDateDay'))
        {
            str_date += options[selectedIndex].value;
        }
        var arr_date = str_date.split('-');
        var objDate = new Date();
        objDate.setFullYear(arr_date[0], arr_date[1]-1, arr_date[2]);
        dCal.showCalendar(Math.round(objDate.getTime() / 1000));
        // Make sure our link doesn't do anything else
        Event.stop(event);
    }    
});

/**
 *	Class to handle loading of start form into page via AJAX
 *	The global removeForm function allows each instance to be removed when
 *	a new one is created.
 */
var removeForm = function(){};
var startFormLoader = Class.create({
	initialize: function(event, target) {
		var a = Event.findElement(event, 'a');
		var lb = $(target).select('.loading')[0];
		var df = $(target).select('.form_holder')[0];
		$(lb).show();
		removeForm(); // in case there's already a form open
		new Ajax.Request(a.href, { onSuccess: function(transport) {
			df.update(transport.responseText);
			$(lb).hide();
			$(a).hide();
			removeForm = function(ev) {
				$(a).show();
				$(df).update();
				if(ev) Event.stop(ev);
			}			
			$(df).select('a.close').each(function(el) {
				Event.observe(el, 'click', removeForm);
			});
		}});
		Event.stop(event);
	}
});

