﻿// This plugin is a wrapper over standard jquery datepicker(ui) and it's created to adapt to several sirius requirements without any modification to origin jquery code as:
// - localization settings (language, culture info)
// - custom non-appearence styles
// 
// parameters:
// options  - settings for all datepicker instances
// regional - country code to select localization settings  (all necesarry localization must be added to 'jquery-ui-i18n.js' before selection)
// cssName  - if non-empty specify a custom class name for datepicker
    (function($) {
        var _regionalLoading = false;
        
        //#region datePicker helper
        siriusdatepickerHelper = (function() {
            var _get_RegionalResourceUrl = function(regional) {
                var _baseUrlToDatePickerRegionalSettings = "../js/Common/ThirdPartComponets/jqueryPlugins/ui-1.8.3/regional-settigns/datepicker/jquery.ui.datepicker";
                return _baseUrlToDatePickerRegionalSettings + "-" + regional + ".js";
            }

            return {
                get_RegionalResourceUrl: function(regional) {
                    return _get_RegionalResourceUrl(regional);
                }
            }
        })();
        
        //#endregion

        //#region datepicker adapter for page without MVP dispatching.
        $.fn.siriusdatepickerNonMVPpageAdapter = function(regional) {
            if (this.siriusdatepicker == null) {
                throw new Error.invalidOperation("siriusdatepicker is null or undifine");
            }

            function callForRegional(url) {
                $.ajax({
                    url: url,
                    dataType: 'script',
                    cache: true
                });
            }

            if (!_regionalLoading) {
                callForRegional(siriusdatepickerHelper.get_RegionalResourceUrl(regional));
                _regionalLoading = true;
            }

            //Delagation
            $.fn.siriusdatepickerNonMVPpageAdapter.prototype = this.siriusdatepicker.prototype;
        }
        
        //#endregion

        //#region Dlugi's date picker
        $.fn.siriusdatepicker = function(options, regional, cssName) {
            var target = this[0];
            return this.each(function() {
                if ($(target).datepicker == undefined) {
                    throw new Error.argument("jQuery ui datepicker", "jQuery ui datepicker can't be found or is wrong binded.");
                }

                $(target).datepicker(options);
                $.datepicker.setDefaults($.datepicker.regional[regional]);

                if (cssName != null && cssName != '') {
                    $($.datepicker.dpDiv[0]).addClass(cssName);
                }
            });
        }


        $.fn.siriusdatepicker.prototype = {
            onSelect: function(target, action) {
                if (action != undefined) {
                    $(target).datepicker('option', 'onSelect', action);
                }
            },

            getDate: function(target) {
                return $(target).datepicker("getDate");
            },

            setDate: function(target, date) {
                return $(target).datepicker("setDate", date);
            }
        }
        
        //#endregion

    })(jQuery);
