var Ellington = window.Ellington || {};

/*
* Calendar
*/
function IsNumeric(sText){if(!sText){return false;}var ValidChars = "0123456789.";var IsNumber=true;var Char;for (i = 0; i < sText.length && IsNumber == true; i++){Char = sText.charAt(i);if (ValidChars.indexOf(Char) == -1) {IsNumber = false;}}return IsNumber;}
function indexInArray(arr,val){for(var i=0;i<arr.length;i++) if(arr[i]==val) return i+1;return 0;}

var months_alpha = new Array('jan','feb','mar','apr','may','jun','jul','aug','sep','oct','nov','dec');
var months = new Array('01','02','03','04','05','06','07','08','09','10','11','12');
var base_path = '';
var base_date = '';

function IsYear(sText){
    if(IsNumeric(sText) && sText.length == 4) {
        return(100);
    } else {
        return(0);
    }
}

function IsMonth(sText){
    var flag=0;
    if(IsNumeric(sText) && sText.length == 2) {
        flag=parseFloat(sText);
    } else {
        if(indexInArray(months_alpha,sText)) {
            flag=indexInArray(months_alpha,sText);
            }
    }
    return flag;
}

Ellington.Calendar = (function($) {
  return function() {
    // Event calendar
    var calendars = $(".calendar");
    var defaultdateurl = window.location.pathname.split( '/' );
    var flag = 0;
    var currentTime = new Date();
    var content_type = defaultdateurl[1];
    var default_year = currentTime.getFullYear();
    var default_month = months[currentTime.getMonth()];
    var default_day = currentTime.getDate();
    var default_date = default_year + default_month + default_day;
    var isMonth = 0;
    var isDay = "";

    function setBasePath(indexItem){base_path += (indexItem + '/');}

    for(var i=1;i<defaultdateurl.length-1;i++) {
        flagg = IsYear(defaultdateurl[i]);
        if (flagg == 100) {
            default_year = defaultdateurl[i];
            isMonth = IsMonth(defaultdateurl[i + 1]);
            flag = 100;
            if(isMonth > 0){
                default_month = isMonth;
                flag = flagg + 10;
                monthalpha = months[isMonth-1];
                isDay = IsNumeric(defaultdateurl[i + 2]);
                if(isDay){
                    default_day = defaultdateurl[i + 2];
                    flag += 1;
                    break;
                }
            }
        } else {
            if(isMonth < 1 && !isDay){
                setBasePath(defaultdateurl[i]);
            }
        }
    }

    default_date = default_year + '/' + default_month + '/' + default_day;

    calendars.each(function(i) {
      var calendar = $(this);
      calendar.datepicker({
        dateFormat: 'yy/mm/dd',
        defaultDate: default_date,
        showOtherMonths: true,
        selectOtherMonths: true,
        dayNamesMin: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],
        prevText: '',
        nextText: '',
        onSelect: function(dateText) {
            window.location.href = window.location.protocol + '//' + window.location.host + '/' + base_path + dateText;
        }
      });
    })

    if (flag == 110) {
        $(".ui-datepicker-calendar td").removeClass("ui-datepicker-current-day");
    }

    // Input date fields
    $("input[name=event_date], input[name=end_date], input[name=start_date], input[name=date]").datepicker({
      dateFormat: 'yy-mm-dd',
      showOtherMonths: true,
      selectOtherMonths: true
    });
    };
})(cmg.query);

cmg.query(document).ready(function($) {
    Ellington.Calendar();
    $('.ui-datepicker-month').live('click', function() {
        var year = $(".ui-datepicker-year").html();
        var temp_month = $(".ui-datepicker-month").html().substr(0,3).toLowerCase();
        var month = '';
        flag=indexInArray(months_alpha,temp_month);
        if(flag > 0) {
            month=months[indexInArray(months,flag) - 1];
        }
        window.location.href = window.location.protocol + '//' + window.location.host + '/' + base_path + year + '/' + month;
    });

    $('.ui-datepicker-year').live('click', function() {
        var year = $(".ui-datepicker-year").html();
        window.location.href = window.location.protocol+"//"+ window.location.host + '/' + base_path + year;
    });
});

