﻿var dateLib = {
    /**
    * pass the date range array and this converts this to the acceptable format by the server
    */
    get_date_range: function(date_arr) {
        var date_range_arr = new Array;

        var startDateArr = date_arr[0].toLocaleDateString().split(",");
        var startDateStr = dateLib.date_to_str(startDateArr, "monthstart");

        var endDateArr = date_arr[1].toLocaleDateString().split(",");
        var endDateStr = dateLib.date_to_str(endDateArr, "monthend");
        date_range_arr.push(startDateStr);
        date_range_arr.push(endDateStr);
        return date_range_arr;
    },
    /**
    * convert date obj to / seperated date string
    */
    date_to_str: function(date_arr, month_pos) {
        var return_str = "";
        var originalMonthIndex = month_string_to_index(date_arr[1].split(" ")[1]);

        var monthIndex = originalMonthIndex + 1;
        if (month_pos == "monthstart") {
            return_str = monthIndex + "/" + "01" + "/" + trimFast(date_arr[2]);
        } else {
            return_str = monthIndex + "/" + daysInMonth(monthIndex, date_arr[2]) + "/" + trimFast(date_arr[2]);
        }
        return return_str;
    },
    /**
    * fetches the start and end date for which the exclusion dated to fetched
    */
    get_start_end_date: function() {
        var date_arr = new Array;

        if (arguments.length > 0) {
            var first_date_obj = this.convert_to_date(YAHOO.fishbowl.calendar.cal1.pages[0].buildMonthLabel());
            var second_date_obj = this.convert_to_date(YAHOO.fishbowl.calendar.cal1.pages[0].buildMonthLabel());
        } else {
            var first_date_obj = this.convert_to_date(YAHOO.fishbowl.calendar.cal1.pages[0].buildMonthLabel());
            var second_date_obj = this.convert_to_date(YAHOO.fishbowl.calendar.cal1.pages[1].buildMonthLabel());
        }
        date_arr.push(first_date_obj);
        date_arr.push(second_date_obj);
        return date_arr;
    },
    /**
    * converts the string format date to date obj
    */
    convert_to_date: function(date_str) {
        var split_date_arr = date_str.split(" ");
        var month_index = month_string_to_index(split_date_arr[0]);
        var month_obj = new Date(parseInt(split_date_arr[1], 10), month_index, 1);
        return month_obj;
    }
}


/**
* returns the no. of days in month
*/
function daysInMonth(month, year) {
    var dd = new Date(year, month, 0);
    return dd.getDate();
}

var month_string_to_index = function(str) {
    switch (str) {
        case "January":
            index = 0;
            break;
        case "February":
            index = 1;
            break;
        case "March":
            index = 2;
            break;
        case "April":
            index = 3;
            break;
        case "May":
            index = 4;
            break;
        case "June":
            index = 5;
            break;
        case "July":
            index = 6;
            break;
        case "August":
            index = 7;
            break;
        case "September":
            index = 8;
            break;
        case "October":
            index = 9;
            break;
        case "November":
            index = 10;
            break;
        case "December":
            index = 11;
            break;
    }
    return index;
}

/*
* Call this from the onkeyup event of a TextArea control
* to limit the number of characters it will allow.
* Example:  <textarea onkeyup="TextArea_keyup(this, 100);" />
*/
function TextArea_keyup( cntrl, maxLength )
{
if (maxLength >= 0)
   {
   if (cntrl.value.length > maxLength)
      {
      cntrl.value = cntrl.value.substring(0,maxLength);
      }
   }
return true;
}
