﻿/************************************************
 **** calendar usage ****************************
 **** http://www.eyecon.ro/datepicker/#about ****
*************************************************/
(function($) {
	$.fn.fmCalendar = function(options) {
		// <summary>
		// Calendar view
		// </summary>
		// <returns type="Object" />
		// <param name="date" type="string|array">Array of selected date or current date</param>
		// <param name="current" type="string">current date</param>
		// <param name="daysToActivate" type="boolean">true: activate date array</param>
		// <param name="dayMonthYearView" type="string">Mode show ['all'|'monthyear'|'year']</param>
		var defaults = {
			date: ['2009-07-24', '2009-07-26']
	    , current: '2009-07-28'
	    , daysToActivate: true
	    , dayMonthYearView: 'all' // ['all'|'monthyear'|'year']
	    , locale: null
	    , starts: 1                  // first day to begin
	    , activeDayColumn: null      // column day to activate [1-7]
	    , onChange: onClickURL       //function(t){alert(t);$("input").DatePickerHide();$("input").val(t)}
	    , mode: 'single'             // *DO NOT USE*   'single'
	    , calendars: 0               // *DO NOT USE*
	    , view: 'days'               // *DO NOT USE* // 'months','years'
	    , acIsOnlyMonthYear: false   // *DO NOT USE*
	    , acIsOnlyYear: false        // *DO NOT USE*
	    , onRender: function() { return {}; }   // *IF UNNECESSARY DO NOT USE*
	    , dateFormat: ''             // *DO NOT USE*
	    , url: ''                    // url to load. Use #date# to replace with date choosen
	    , elmntCalendar: ''          // Element to update with date choosen
	    , fctOnClick: null            // Function to execute on click event - parameter is choosen date
	    , isEphemerid: false          // Ephemerid special
	    , isCommunitySubcription: false // Comunity special
		},
		settings = $.extend({}, defaults, options);

		// Normal view: standard calendar, else only month and year calendar
		if (settings.dayMonthYearView == 'all') {
			settings.view = 'days';
			settings.mode = 'multiple';
			settings.dateFormat = 'Y-m-d';
		}
		else if (settings.dayMonthYearView == 'monthyear') {
			settings.view = 'months';
			settings.mode = 'multiple';
			settings.dateFormat = 'Y-m';
			settings.acIsOnlyMonthYear = true;
		}
		else {
			// Year only
			settings.view = 'years';
			settings.mode = 'multiple';
			settings.dateFormat = 'Y';
			settings.acIsOnlyYear = true;
		}

		if (settings.isEphemerid) {
			settings.dateFormat = 'm/d';
		}
		settings.url = AcConcierged(settings.url).replace(/%23/g, '#').replace("(date)", '#date#');

		//        if (settings.isCommunitySubcription) {
		//            settings.dateFormat = 'm-d';
		//        }

		function onClickURL(dateChoosen) {
			$(settings.elmntCalendar).DatePickerHide();
			// execute function if function parameter is not null
			if (settings.fctOnClick != null) {
				settings.fctOnClick(dateChoosen);
			}
			else {
				// fill input element if no url specified
				if (settings.url == '')
					$(settings.elmntCalendar).val(dateChoosen);
				else {
					var reg = new RegExp("#date#", "g");
					window.location.href = (settings.url).replace(reg, dateChoosen);
				}
			}
		}

		// activate date
		function activateDate(date) {
			//alert(date);
			//if(date.getMonth() == )
			return {
				disabled: true
            , className: false//'datepickerWeek'
			}
		}

		if (settings.daysToActivate) {
			settings.onRender = activateDate;
		}

		// activate only one day
		if (settings.activeDayColumn != null) {
			settings.onRender = function(date) {
				return {
					disabled: !(date.getDay() == settings.activeDayColumn)
                , className: false
				}
			}
		}


		// locale labels ("january", "february",...) are not changed
		//if (settings.locale != null) {
		$(this).DatePicker({
			date: settings.date
            , current: settings.current
            , view: settings.view
            , calendars: settings.calendars
            , onChange: settings.onChange
            , locale: settings.locale
            , starts: settings.starts
            , acIsOnlyMonthYear: settings.acIsOnlyMonthYear
            , onRender: settings.onRender
            , mode: settings.mode
            , format: settings.dateFormat
            , acIsOnlyYear: settings.acIsOnlyYear
            , acIsEphemerid: settings.isEphemerid
		});
		/*        }
		else {
		$(this).DatePicker({
		date: settings.date
		, current: settings.current
		, view: settings.view
		, calendars: settings.calendars
		, onChange: settings.onChange
		, starts: settings.starts
		, acIsOnlyMonthYear: settings.acIsOnlyMonthYear
		, onRender: settings.onRender
		, mode: settings.mode
		, format: settings.dateFormat
		, acIsOnlyYear: settings.acIsOnlyYear
		, acIsEphemerid: settings.isEphemerid
		});
		}*/

		return this;
	}
})(jQuery);

