$(function(){
   
   $('#home-slider').fadeIn();
   $('#home-slider').bxSlider({
      mode : 'fade',
      controls : false,
      auto : true,
      speed : 2000,
      pause : 4000
   });   

   if(jQuery().fullCalendar) {
      var startpos = -1;
      $('.fullcalendar').each(function(){
      var t = $(this);
      t.fullCalendar({
         header:{left:'prev,next today',center:'title',right:'month,agendaWeek,agendaDay'},
         eventSources: [
            {
               url: window.location.pathname+'.json',
               dataType: 'text json',/*this cures a loading bug*/
               type: 'GET',
               data: {
                  action: 'calendar',
                  id: t.attr('id').replace('calendar-','')
               },
               error: function(xhr, ajaxOptions, thrownError) {
                  alert('there was an error while fetching events!'+xhr.statusText);
                  console.log(thrownError);
                  console.log(xhr);
               }
            }
         ],
         eventClick: function (event) {
            $('#window').children('div').appendTo('#holding');
            $('#a-'+event.id).appendTo('#window');
            return false;
            /*
            if(event.url) {
               window.open(event.url, "_blank", "toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=no, copyhistory=yes, width=400, height=400");
               return false;
            }*/
        },
      eventAfterRender : function( event, element, view ) {
         var m =$('.fullcalendar').fullCalendar( 'getView' ).start.getMonth();
         if(event.start.getMonth() == m || event.end.getMonth() == m){
            var startDay = new Date(event.start).getDate();
            var endDay = startDay;
            if(event.end){
               endDay = new Date(event.end).getDate();
            }
            var cell;var x = 0;var z = endDay+1;
            if(startpos == -1){
               startpos = $('.fullcalendar .fc-widget-content:not(.fc-other-month):has(.fc-day-number):contains("1"):first').index()-1;
            }
            var stout = '';
            for(i = startDay;i<z;i++){
               x = i+startpos;
               if(i != startDay)stout += ',';
               stout += 'td.fc-day'+x+':not(td.fc-other-month):first'
            }
            cell = $('div.fc-view tbody:first').find(stout);
            cell.addClass('hasevent');
            if(event.className[0]){
               cell.addClass(event.className[0]);
            }
         }
      },
      viewDisplay  : function(view) {
         startpos = -1;
         $('.hasevent').removeClass('hasevent').removeClass('RWC2011');
      },
        dayClick: function(date, allDay, jsEvent, view) {
         var today = new Date(date);
         var endofday = new Date(date);
         endofday.setDate(endofday.getDate() + 1);
         var stOut = '';
         var first = true;
         
         $('.fullcalendar').fullCalendar('clientEvents', function(event) {
            if((event.start <= endofday && event.end >= today) || (event.start <= endofday && event.start >= today)){
               if(!first)stOut += ',';
               stOut += '#a-'+event.id;
               first = false;
            }
            //return false;
         });
         if(!first){
            
            $('#lightup,.lightlink').remove();
            $('#holding').prepend('<a class="lightlink" href="#lightup">link</a><div id="lightup"></div>');
            $(stOut).clone().prependTo("#lightup");
         //$("#lightup")
            var datetoday = $.fullCalendar.formatDate( today, 'dddd d MMMM, yyyy');
         $("#lightup .RWC2011").prependTo("#lightup");
            $("#lightup").prepend('<strong>'+datetoday+'</strong>');
         
         if($.browser.msie && $.browser.version.slice(0,1) == "7"){
            $("a.lightlink:first").attr('href','#lightup');
            $("a.lightlink:first").fancybox({'margin':20});
            $("a.lightlink:first").trigger('click');
            
         }else{
            $("a.lightlink:first").fancybox();
            $("a.lightlink:first").trigger('click');
         }
        }
         //$("#lightup,#lightlink").remove();
      },

         selectable:true,
         aspectRatio: 1.2,
         theme: false,
         editable: false,
         weekends: true,
         allDaySlot: false,
         allDayDefault: false,
         dayNamesShort:['S', 'M', 'T', 'W', 'T', 'F', 'S'],
         weekMode: 'fixed',
         header:{left:'today',center:'title',right:'prev,next'}


      }).fullCalendar( 'gotoDate', 2011, 08 );
   });
   }


  if($("#start")[0]) {
     $("#start").datepick({ 
         minDate: new Date(),
         dateFormat: "dd/mm/yy", 
         showOn: "both", 
         buttonImage: "/assets/calendar.gif", 
         buttonImageOnly: true,
         yearRange: '-0:+1'
      });
   }

   $("a.roll img").hover(function() {
      this.src = this.src.replace("-off","-on");
   },
   function()
   {
      this.src = this.src.replace("-on","-off");
   });

   $("a.BossImagePop").fancybox({
      'hideOnContentClick': true
   });
   
   

   
  $("dl.rates input.button").click(function () {
      if ($("#start").val().length > 0 && $("#amount").val().length > 0) {
         var start = $("#start").datepick("getDate"), amount = parseFloat($("#amount").val().replace("$", "")), end;

         // Determine the year for the next month of June.
         end = (start.getMonth() >= 5) ?
            new Date(start.getFullYear() + 1, 5, 30):
            new Date(start.getFullYear(), 5, 30);
          
         // Can't use this method - result changes depending on which day of week we start payments on (vs. 30th June day of week).
         // weeks = ( 53 - $.datepicker.iso8601Week(end) ) + ( 53 - $.datepicker.iso8601Week(start) );

         // Instead, convert to ms, then to days. Derive no. of weeks and fortnights from this.
         start_ms = Date.parse(start);
         end_ms   = Date.parse(end);

         // 86400000ms in one day. Add 1 to include the week we're in.
         days = (( end - start ) / 86400000 );
         weeks = Math.floor(( days / 7 ) + 1 );
         fnights = Math.floor(( days / 14 ) + 1 );

         // If the start payment date is after the 30th, there's one less payment month available. No payment in last month (June).
         if (start.getDate() > 30)
            months = Math.floor( (11  - start.getMonth()) + (11 - end.getMonth()) );
         else
            months = Math.floor( (11  - start.getMonth()) + (11 - end.getMonth()) + 1 );

         $("#weekly").val($.boss.formatCurrency( amount / weeks ));
         $("#fortnightly").val($.boss.formatCurrency( amount / fnights ));
         $("#monthly").val($.boss.formatCurrency( amount / months ));
      }
   });
   
   /* Form validation */
   if (typeof $.validator !== undefined) $.validator.messages.required = " *";
   
   // validate signup form on keyup and submit
   $(".ReturnForm").validate({
        
        //As soon as a key within a form field in �myform� is release then start 
      event: "keyup",
      
      //Here the rules for the individual inputs are defined.
      rules: {
         text: "required"
      }
   });

});

