function step1_init()
{
    $('asset_type').addEvent('change', assets_update_combobox);
    $('asset_id').addEvent('change', asset_load);
    $('location_id').addEvent('change', function () 
    {
        $('asset_type').fireEvent('change', $('asset_type'));
    });
    $('prevmonth').addEvent('click', calendar_prev_month);
    $('nextmonth').addEvent('click', calendar_next_month);
    
    if($('location_id').get('value'))
    {
        $('location_id').fireEvent('change', $('location_id'));
    }
    
    $('sunrise').addEvent('click', time_range_select);
    $('noon').addEvent('click', time_range_select);
    $('sunset').addEvent('click', time_range_select);
    
    $('bookingform').addEvent('submit', validate_data)
}

function validate_data(evt) 
{
    if($('tourdatetime').get('value').trim() === '')
    {
        evt.preventDefault();
        alert('Please select a date from the calendar');
    }

    if($('timeslot_id').get('value').trim() === '')
    {
        evt.preventDefault();
        alert('Please select a time from the calendar');
    }
}

function time_range_select(evt)
{
    if(typeof evt != 'undefined' && typeof evt.preventDefault != 'undefined')
    {
        evt.preventDefault();
    }
    $('showtime').set('html', this.get('html'));
    
    $$('.timeselected').removeClass('timeselected');
    
    this.addClass('timeselected');
    $('timeslot_id').set('value', this.get('timeslot_id'));
    if(this.get('blackout')) {
        $('couponnumbertxt').setStyle('visibility', 'hidden');
        $('couponnumber').value = '';
    } else {
        $('couponnumbertxt').setStyle('visibility', 'visible');
    }
}

function timeslots_load(timeslots)
{
    $('timeslot_selection').set('html', '');
    for (var n = 0, timeslot; timeslot = timeslots[n]; n++)
    {
        var timename = timeslot.timeslot_time;
        if(timeslot.name !== '')
        {
            timename = timeslot.name;
        }
        var a = new Element('a', {
            'class': 'time time_range',
            'href': '#time',
            'html': timename,
            'timeslot_id': timeslot.timeslot_id,
            'timeslot_time': timeslot.timeslot_time,
            'blackout': timeslot.blackout,
            'events': {
                'click': time_range_select
            }
        });
        a.inject($('timeslot_selection'));
    }
    var parts = $('showtime').get('text').split(' ');
    var selector = '';
    for (var n = 0, part; part = parts[n]; n++)
    {
        selector += '[timeslot_time~=' + part + ']';
    }
    var selected = $$(selector);
    selected.fireEvent('click', selected);
}

function calendar_load()
{
    calender_size = $('calendar_container').getSize();
    $('selectdatetime').setStyle('display', 'block');
    var year  = $('date_year').get('value');
    var month = $('date_month').get('value');
    var month_day = $('date_day').get('value');
    var asset_id = $('asset_id').get('value');
    var year_month_day = year + '.' + month + '.' + month_day;
    var jsonRequest = new Request.JSON({url: 'client-json-calendar.php', onComplete: function (calendar)
    {
        if (typeof calendar !== 'undefined')
        {
            $('calendar_container').empty();
            $('month_year_display').set('html', calendar.month + ' ' + calendar.year);
            var days = calendar.days;
            for (var i = 0; i < days.length; i++)
            {
                var day = days[i];
                var date_split = day.date.split('.');
                var date = {
                    'year':  date_split[0],
                    'month': date_split[1],
                    'day':   date_split[2]
                };
                var a = new Element('a', {
                    'html': '<span>' + date.day + '</span>',
                    'class': 'calday',
                    'title': 'Click to select',
                    'date':  day.date,
                    'events': {
                        'click': function (evt)
                        {
                            if(typeof evt.preventDefault !== 'undefined')
                            {
                                evt.preventDefault();
                            }
                            var date_split = this.get('date').split('.');
                            var date_split = {
                                'year':  date_split[0],
                                'month': date_split[1],
                                'day':   date_split[2]
                            };
                            var date = new Date(date_split.year, date_split.month - 1, date_split.day);
                            $('tourdatetime').set('value', date.toString().split('00:')[0]);
                            
                            $$('.caldayselected').removeClass('caldayselected');
                            this.addClass('caldayselected');
                            new Request.JSON({url: 'client-json-timeslots-list.php', onComplete: timeslots_load}).post({
                                'date': $('tourdatetime').value,
                                'asset_id': $('asset_id').value
                            });
                        }
                    }
                });
                if(date.month != month)
                {
                    a.addClass('caloffday');
                }
                if(day.valid === false)
                {
                    a.set('title', 'There are no times avaliable on this day.');
                    a.addClass('calinvalidday');
                    a.removeEvents('click');
                }
                
                a.inject($('calendar_container'));
            }
            var selected_day = $$('[date=' + year_month_day + ']');
            if(selected_day)
            {
                selected_day.fireEvent('click', selected_day);
            }
        } else {
            alert('Error #666');
        }
    }}).post({
        'year': year,
        'month': month,
        'rand': Math.random(),
        'asset_id': asset_id
    });
}

function calendar_prev_month()
{
    var date = new Date();
	date.setFullYear($('date_year').get('value'));
	date.setMonth(parseInt($('date_month').get('value')) - 1);
	date.setMonth(date.getMonth() - 1);	  
	calendar_set_date(date);    
	calendar_load();
}

function calendar_next_month()
{
    var date = new Date();
	date.setFullYear($('date_year').get('value'));
	date.setMonth(parseInt($('date_month').get('value')) - 1);
	date.setMonth(date.getMonth() + 1);	 
	calendar_set_date(date);  
	calendar_load();
}

function calendar_set_date(date)
{
    var month = date.getMonth() + 1;
	$('date_month').set('value', month);
	$('date_year').set('value', date.getFullYear());   
}

function assets_update_combobox() 
{
    var jsonRequest = new Request.JSON({url: 'client-json-assets-list.php', onComplete: function (assets)
    {
        $('asset_id').empty();
        if (assets.length)
        {
            $('asset_id').removeProperty('disabled');
            $('asset_id').removeProperty('style');
            for (var i = 0; i < assets.length; i++)
            {
                var asset = assets[i];
                var option = new Element('option', 
                {
                    'value': asset.asset_id,
                    'html': asset.name
                });
                option.inject($('asset_id'));
            }
            $('asset_id').fireEvent('change', $('asset_id'));
        } else {
            alert('There are no ' + $('asset_type').get('value') + ' avaliable from this location ');
        }
    }}).post({
        'location_id': $('location_id').get('value'),
        'asset_type': $('asset_type').get('value')
    });
}

function asset_load() 
{
    var jsonRequest = new Request.JSON({url: 'client-json-asset-details.php', onComplete: function (asset)
    {
        $('asset_details').empty();
        if (asset)
        {
            var h2 = new Element('h2', 
            {
                'class': 'head',
                'html': asset.name
            });
            h2.inject($('asset_details'));
            var p = new Element('p', 
            {
                'class': 'text',
                'html': asset.description_short
            });
            p.inject($('asset_details'));
            $('showtitle').set('html', asset.name);
        } else {
            alert('There are no information avaliable from this asset');
        }
    }}).post({
        'asset_id': $('asset_id').get('value')
    });
    calendar_load()
}
