﻿/*
  Event Calendar
*/
$(document).ready( function() {

  var event_data = new Array(),
    thisYear  = new Date().getFullYear(),
    thisMonth = new Date().getMonth(),
    isLeap    = (new Date(thisYear,1,29).getDate() == 29) ? true : false,
    monthDaysList  = new Array(31,28,31,30,31,30,31,31,30,31,30,31),
    monthNamesList = new Array("Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"),
    daysNameList   = new Array("Dom","Seg","Ter","Qua","Qui","Sex","Sab"),
    monthContainer = $('.anm-cal-months ul'),
    dayContainer   = $('.anm-cal-days ul');

  if(isLeap) monthDaysList[1] = 29;

  var selectMonth = function () {
    monthContainer.find('li').removeClass('selected');
    thisMonth = $(this).addClass('selected').index();
    displayDays();
  }

  var displayDays = function () {

    $('.cal-left-button, .cal-right-button').unbind('click');

    //generates days
    html  = '';
    for(i=1;i<=monthDaysList[thisMonth];i++) {
      weekday = new Date(thisYear,thisMonth,i).getDay();
      day = (i<10)? '0'+(i) : i;
      html += '<li><div class="weekday">'+daysNameList[weekday]+'</div><div class="day">'+day+'</div></li>';
    }

    //adds days to list
    dayContainer.html(html);

    //adds carousel feature
    $('.anm-cal-days').jCarouselLite({
      btnNext  : ".cal-right-button",
      btnPrev  : ".cal-left-button",
      scroll   : 5,
      visible  : 17,
      circular : false
    });

    if(typeof(event_data[thisMonth]) !== 'undefined') {

      var day_events = new Array();
      //gets data for this month
      for(i=0; i < event_data[thisMonth].length; i++) {		
        
		if(typeof(event_data[thisMonth][i]) !== 'undefined') {
			
			id = event_data[thisMonth][i].id;

			//calculates the range of days for this month
			if(event_data[thisMonth][i].startMonth == (thisMonth + 1) && event_data[thisMonth][i].endMonth > (thisMonth + 1)) {
			  dayFrom = parseInt(event_data[thisMonth][i].startDay);
			  dayTo   = monthDaysList[thisMonth];
			} else if (event_data[thisMonth][i].startMonth < (thisMonth + 1) && event_data[thisMonth][i].endMonth == (thisMonth + 1)) {
			  dayFrom = 1;
			  dayTo   = parseInt(event_data[thisMonth][i].endDay);
			} else if (event_data[thisMonth][i].startMonth < (thisMonth + 1) && event_data[thisMonth][i].endMonth > (thisMonth + 1)) {
			  dayFrom = 1;
			  dayTo   = monthDaysList[thisMonth];
			} else {
			  dayFrom = parseInt(event_data[thisMonth][i].startDay);
			  dayTo   = parseInt(event_data[thisMonth][i].endDay);
			}

			for(j=dayFrom;j<=dayTo; j++) {
			  if(!$.isArray(day_events[j])) {
				day_events[j] = new Array();
			  }
			  day_events[j].push(id);
			}		
		}
      }

      //console.log(day_events);

      //adds event info to each day
      for(i=0;i<day_events.length;i++) {
        if(typeof(day_events[i]) !== 'undefined') {
          dayContainer.children('li').eq(i-1).data('events',day_events[i]).addClass('hasevents').click(function () {

            var event_list = $(this).data('events');
            dayContainer.children('li').removeClass('selected');
            $(this).addClass('selected');
            
            items = '';
            for (j=0;j<event_list.length;j++) {
              items += '#item-' + event_list[j] + ',';
            }
            items = items.substring(0,items.length - 1);
            
            if($('.news-item:hidden').length == $('.news-item').length) {
              $(items).fadeIn(250);
            } else {
              $('.news-item').not(':hidden').fadeOut(250, function () {
                $(items).fadeIn(250);
              });
            }
          });
        }
      }
      
    }
    if($('.anm-cal-days li.hasevents').length > 0) {
      $('.anm-cal-days li.hasevents').eq(0).trigger('click');
    } else {
      $('.news-item').not(':hidden').fadeOut(250, function () {
        $('.no-events').fadeIn(250);
      });
    }
  }
  
  if($('.anm-cal').length > 0) {
    
    $('.left-menu ul').css('display','none');
    
    $.ajax({
      url: '?ID=25',
      type: 'POST',
      data: 'NewsParagraphCustomYear29='+thisYear,
      success: function(xml) {
        
        var month_counter = new Array(),
			firstEventMonth = 11;

        if ( typeof xml == 'string' && ($.browser.msie)) {
            data = new ActiveXObject( 'Microsoft.XMLDOM');
            data.async = false;
            data.loadXML(xml);
        } else {
            data = new DOMParser().parseFromString( xml, 'text/xml' );
        }

        $(data).find('newsitem').each(function () {
		   
		   startYear  = parseInt($(this).attr('startYear'));
		   endYear    = parseInt($(this).attr('endYear'));
		   startMonth = parseInt($(this).attr('startMonth'));
		   endMonth   = parseInt($(this).attr('endMonth'));		   
		   
          //gets the event if it belongs to the current year
          if(!(startYear > thisYear || endYear < thisYear) && $('#item-'+$(this).attr('id')).length > 0) {
            //calculates the range of months for this event
			
            if(startYear == thisYear && endYear > thisYear) {
              monthFrom = startMonth;
              monthTo   = 12;
            } else if (startYear < thisYear && endYear == thisYear) {
              monthFrom = 1;
              monthTo   = endMonth;
            } else if (startYear < thisYear && endYear > thisYear) {
              monthFrom = 1;
              monthTo   = 12;
            } else {
              monthFrom = startMonth;
              monthTo   = endMonth;
            }
             
			if((firstEventMonth - 1) >= (monthFrom - 1)) firstEventMonth = (monthFrom - 1); /* helpdesk - nuno.b – 13-05-2011 (bug with selected month) */ 
                 //sorts the data by month
            for(i=monthFrom;i<=monthTo;i++) {
              
			  month = (i-1);
			  
              if ( typeof(month_counter[month]) === 'undefined' ) {
				month_counter[month] = 0;				
			  } else {
			 	month_counter[month] = month_counter[month]+1;
			  }				
				
              if(!$.isArray(event_data[month])) event_data[month] = new Array();
			  
              event_data[month][month_counter[month]] = {
                id         : parseInt($(this).attr('id')),
                startDay   : parseInt($(this).attr('startDay')),
                startMonth : parseInt($(this).attr('startMonth')),
                startYear  : parseInt($(this).attr('startYear')),
                endDay     : parseInt($(this).attr('endDay')),
                endMonth   : parseInt($(this).attr('endMonth')),
                endYear    : parseInt($(this).attr('endYear'))
              };
			  
            }

          }                
        });

        //creates a month list
        for(i=0;i<=monthNamesList.length;i++) {
          monthContainer.append($('<li />').click(selectMonth).html(monthNamesList[i]));
        }
		
        //selects current month		
        $('.anm-cal-months li').eq(firstEventMonth).trigger('click'); //thisMonth        
        
        //transform the left side menu into a dropbox ...
        var event_menu = $('.left-menu ul li.inpath ul li.L3 a');
        if(event_menu.length > 1) {
          var container   = $('.anm-events-wrapper'),
              current_url = window.location.toString().split("/");
          
          current_url = current_url[current_url.length-1];
              
          var select = $('#anm-events-select');
          option = '';
          event_menu.each(function () {
            this_url = new String($(this).attr('href')).split("/");
            this_url = this_url[this_url.length-1];
            
            selected = (current_url == this_url) ? selected = ' selected="selected"' : selected = '';
            option += '<option value="'+$(this).attr('href')+'"'+selected+'>'+$(this).find('span').html()+'</option>';
            
          });          

          select.html(option);
          
          select.change(function (){
            window.location.replace($("option:selected", this).val() );
          });
          
          $('.left-menu ul li.inpath ul').remove();
          $('.left-menu ul').css("display", "block");
        }
        
      }
    });
  }
});
