(function() {
    var j = 1;
    var k = 2;
    var l = 3;
    var m = 4;
    var n = 5;
    var o = 6;
    var p = true;
    var q = 'arguments';
    var r = 'undefined';
    var s = (function() {
        var toString = Object.prototype.toString,toStrings = {},nodeTypes = {1:'element',3:'textnode',9:'document',11:'fragment'},types = 'Arguments Array Boolean Date Document Element Error Fragment Function NodeList Null Number Object RegExp String TextNode Undefined Window'.split(' ');
        for (var i = types.length; i--;) {
            var b = types[i],constructor = window[b];
            if (constructor) {
                try {
                    toStrings[toString.call(new constructor)] = b.toLowerCase()
                } catch(e) {
                }
            }
        }
        return function(a) {
            return a == null && (a === undefined ? r : 'null') || a.nodeType && nodeTypes[a.nodeType] || typeof a.length == 'number' && (a.callee && q || a.alert && 'window' || a.item && 'nodelist') || toStrings[toString.call(a)]
        }
    })();
    var t = function(a) {
        return s(a) == 'function'
    };
    var u = function(b, c, d) {
        var f = b[c];
        if (d.type != o && !t(f)) {
            var oldObject = f;
            f = function() {
                var a = arguments.length > 0 ? q + '[0]' : '';
                for (var i = 1; i < arguments.length; i++) {
                    a += ',' + q + '[' + i + ']'
                }
                return eval('oldObject(' + a + ');')
            }
        }
        var h;
        if (d.type == j || d.type == k || d.type == l)h = function() {
            var a,exceptionThrown = null;
            try {
                a = f.apply(this, arguments)
            } catch(e) {
                exceptionThrown = e
            }
            if (d.type == j)if (exceptionThrown == null)a = d.value.apply(this, [a,c]); else throw exceptionThrown; else if (d.type == k && exceptionThrown != null)a = d.value.apply(this, [exceptionThrown,c]); else if (d.type == l)a = d.value.apply(this, [a,exceptionThrown,c]);
            return a
        }; else if (d.type == m)h = function() {
            d.value.apply(this, [arguments,c]);
            return f.apply(this, arguments)
        }; else if (d.type == o)h = function() {
            return d.value.apply(this, arguments)
        }; else if (d.type == n) {
            h = function() {
                var a = {object:this,args:Array.prototype.slice.call(arguments)};
                return d.value.apply(a.object, [{arguments:a.args,method:c,proceed:function() {
                    return f.apply(a.object, a.args)
                }}])
            }
        }
        h.unweave = function() {
            b[c] = f;
            pointcut = b = h = f = null
        };
        b[c] = h;
        return h
    };
    var v = function(a, b, c) {
        var d = [];
        for (var f in a) {
            var g = null;
            try {
                g = a[f]
            } catch(e) {
            }
            if (g != null && f.match(b.method) && t(g))d[d.length] = {source:a,method:f,advice:c}
        }
        return d
    };
    var w = function(a, b) {
        var c = typeof(a.target.prototype) != r ? a.target.prototype : a.target;
        var d = [];
        if (b.type != o && typeof(c[a.method]) == r) {
            var e = v(a.target, a, b);
            if (e.length == 0)e = v(c, a, b);
            for (var i in e)d[d.length] = u(e[i].source, e[i].method, e[i].advice)
        } else {
            d[0] = u(c, a.method, b)
        }
        return p ? d : d[0]
    };
    jQuery.aop = {after:function(a, b) {
        return w(a, {type:j,value:b})
    },afterThrow:function(a, b) {
        return w(a, {type:k,value:b})
    },afterFinally:function(a, b) {
        return w(a, {type:l,value:b})
    },before:function(a, b) {
        return w(a, {type:m,value:b})
    },around:function(a, b) {
        return w(a, {type:n,value:b})
    },introduction:function(a, b) {
        return w(a, {type:o,value:b})
    },setup:function(a) {
        p = a.regexMatch
    }}
})();
(function($) {

    $.datetime_index = '';
    $.fn.datetime = function() {

        var userLang = arguments[0]['userLang'] || 'cs';
        var b24Hour = !(arguments[0]['americanMode'] || false);
        var markerClass = 'hasDateTime';
        var formatLcl = (arguments[0]['format'] || "dd.MM.yyyy");
        var scale = (arguments[0]['showScale'] || false);
        var showButtons = (arguments[0]['showButtons'] || false);
        var minStp = (arguments[0]['minuteStep'] || 5);
        var hasDatePicker;
        if (formatLcl.toLowerCase().indexOf('d') > -1 || formatLcl.indexOf('M') > -1 || formatLcl.toLowerCase().indexOf('y') > -1) {
            hasDatePicker = true;
        }
        else {
            hasDatePicker = false;
        }
        var hasTimePicker;

        if (formatLcl.toLowerCase().indexOf('h') > -1 || formatLcl.indexOf('m') > -1) {
            hasTimePicker = true;
        }
        else {
            hasTimePicker = false;
        }
        var objectId;

        return this.each(function() {
            //if input is empty, .data function doesnt return object reference, we have to set some value
            if ($(this).val() == '') {
                $(this).val(' ');
            }

            //mandatory date picker configuration taken from function arguments
            var datepicker_def = {
                changeMonth: arguments[0]['changeMonth'],
                changeYear: arguments[0]['changeYear'],
                dateFormat: "yy-mm-dd",
                showButtonPanel: showButtons,
                onSelect: writeDate
            };

            //optional date picker configuration taken from function arguments. Wh have to check whether property is set (and not null), we don't want to override default
            // configuration with false values.
            if (arguments[0]['appendText'] != null) {
                datepicker_def['appendText'] = arguments[0]['appendText']
            }
            if (arguments[0]['altFormat'] != null) {
                datepicker_def['altFormat'] = arguments[0]['altFormat']
            }
            if (arguments[0]['altField'] != null) {
                datepicker_def['altField'] = arguments[0]['altField']
            }
            if (arguments[0]['buttonImage'] != null) {
                datepicker_def['buttonImage'] = arguments[0]['buttonImage']
            }
            if (arguments[0]['buttonImageOnly'] != null) {
                datepicker_def['buttonImageOnly'] = arguments[0]['buttonImageOnly']
            }
            if (arguments[0]['buttonText'] != null) {
                datepicker_def['buttonText'] = arguments[0]['buttonText']
            }
            if (arguments[0]['closeText'] != null) {
                datepicker_def['closeText'] = arguments[0]['closeText']
            }
            if (arguments[0]['constrainInput'] != null) {
                datepicker_def['constrainInput'] = arguments[0]['constrainInput']
            }
            if (arguments[0]['currentText'] != null) {
                datepicker_def['currentText'] = arguments[0]['currentText']
            }
            if (arguments[0]['dayNames'] != null) {
                datepicker_def['dayNames'] = arguments[0]['dayNames']
            }
            if (arguments[0]['dayNamesMin'] != null) {
                datepicker_def['dayNamesMin'] = arguments[0]['dayNamesMin']
            }
            if (arguments[0]['dayNamesShort'] != null) {
                datepicker_def['dayNamesShort'] = arguments[0]['dayNamesShort']
            }
            if (arguments[0]['defaultDate'] != null) {
                datepicker_def['defaultDate'] = arguments[0]['defaultDate']
            }
            if (arguments[0]['duration'] != null) {
                datepicker_def['duration'] = arguments[0]['duration']
            }
            if (arguments[0]['firstDay'] != null) {
                datepicker_def['firstDay'] = arguments[0]['firstDay']
            }
            if (arguments[0]['gotoCurrent'] != null) {
                datepicker_def['gotoCurrent'] = arguments[0]['gotoCurrent']
            }
            if (arguments[0]['hideIfNoPrevNext'] != null) {
                datepicker_def['hideIfNoPrevNext'] = arguments[0]['hideIfNoPrevNext']
            }
            if (arguments[0]['isRTL'] != null) {
                datepicker_def['isRTL'] = arguments[0]['isRTL']
            }
            if (arguments[0]['maxDate'] != null) {
                datepicker_def['maxDate'] = arguments[0]['maxDate']
            }
            if (arguments[0]['minDate'] != null) {
                datepicker_def['minDate'] = arguments[0]['minDate']
            }
            if (arguments[0]['monthNames'] != null) {
                datepicker_def['monthNames'] = arguments[0]['monthNames']
            }
            if (arguments[0]['monthNamesShort'] != null) {
                datepicker_def['monthNamesShort'] = arguments[0]['monthNamesShort']
            }
            if (arguments[0]['navigationAsDateFormat'] != null) {
                datepicker_def['navigationAsDateFormat'] = arguments[0]['navigationAsDateFormat']
            }
            if (arguments[0]['nextText'] != null) {
                datepicker_def['nextText'] = arguments[0]['nextText']
            }
            if (arguments[0]['OfMonths'] != null) {
                datepicker_def['OfMonths'] = arguments[0]['OfMonths']
            }
            if (arguments[0]['prevText'] != null) {
                datepicker_def['prevText'] = arguments[0]['prevText']
            }
            if (arguments[0]['shortYearCutoff'] != null) {
                datepicker_def['shortYearCutoff'] = arguments[0]['shortYearCutoff']
            }
            if (arguments[0]['showAnim'] != null) {
                datepicker_def['showAnim'] = arguments[0]['showAnim']
            }
            if (arguments[0]['showButtonPanel'] != null) {
                datepicker_def['showButtonPanel'] = arguments[0]['showButtonPanel']
            }
            if (arguments[0]['showCurrentAtPos'] != null) {
                datepicker_def['showCurrentAtPos'] = arguments[0]['showCurrentAtPos']
            }
            if (arguments[0]['showMonthAfterYear'] != null) {
                datepicker_def['showMonthAfterYear'] = arguments[0]['showMonthAfterYear']
            }
            if (arguments[0]['showOn'] != null) {
                datepicker_def['showOn'] = arguments[0]['showOn']
            }
            if (arguments[0]['showOtherMonths'] != null) {
                datepicker_def['showOtherMonths'] = arguments[0]['showOtherMonths']
            }
            if (arguments[0]['stepMonths'] != null) {
                datepicker_def['stepMonths'] = arguments[0]['stepMonths']
            }
            if (arguments[0]['yearRange'] != null) {
                datepicker_def['yearRange'] = arguments[0]['yearRange']
            }
            if (hasTimePicker) {
                datepicker_def['hideCloseButton'] = true;
            }

            var lang = {};

            lang['en'] = {
                time:     'time',
                from:    'From',
                to:        'To',
                hour:    'hour',
                minute:    'minute',
                close:    'Close'
            };

            lang['cs'] = {
                time:     'čas',
                from:     'Od',
                to:     'Do',
                hour:    'Od',
                minute:    'Do',
                close:    'Zavřít'
            };

            $(this).data('sets', datepicker_def);
            $(this).data('userLang', userLang);
            $(this).data('b24Hour', b24Hour);
            $(this).data('hasDatePicker', hasDatePicker);
            $(this).data('minStp', minStp);
            $(this).data('format', format);

            objectId = $(this).attr('id');
            $(this).data('objectId', objectId);


            function renderPickerPlug(b24Hour_, lang_) {

                format = formatLcl
                var loadedLang = lang[lang_] || lang['cs'];
                minStp = $('#pickerplug').data('minStp');
                var htmlins = '<div id="pickerplug" class="pickerplugClass" style="position:absolute" >';

                if (hasTimePicker) {
                    htmlins += '<div id="timepicker">';
                    htmlins += '<div id="ui-clock"></div>';
                    htmlins += '<div class="ui-datepicker ui-datepicker-inline ui-widget ui-widget-content ui-helper-clearfix ui-corner-all timepick">';
                    htmlins += '		<div id="text_fromTime" class="ui-widget-header ui-corner-all timeSelect hidden">';
                    htmlins += '		</div>';
                    htmlins += '		<div id="tpSelectedTime" class="ui-datepicker-header ui-widget-header ui-corner-all timeSelect">';
                    htmlins += '			<span class="selHrs" >08</span>';
                    htmlins += '			<span class="delim" >:</span>';
                    htmlins += '			<span class="selMins">09</span>';
                    htmlins += '			<span class="dayPeriod">am</span>';
                    htmlins += '		</div>';
                    htmlins += '		<div id="sliderContainer">';
                    htmlins += '   		     <table><tr>';
                    htmlins += '        			<th id="text_hour"></th>';
                    htmlins += '        			<th id="text_minute"></th>';
                    htmlins += '  		      		</tr>';
                    htmlins += '   		     		<tr>';
                    htmlins += '   		     		<td align="center" ';
                    if (scale) {
                        htmlins += 'class="hourScale"'
                    }
                    ;
                    htmlins += '><div id="hourSlider" class="slider singleSlider"></div></td>';
                    htmlins += '   		     		<td align="center" ';
                    if (scale) {
                        htmlins += 'class="minuteScale"'
                    }
                    ;
                    htmlins += '><div id="minuteSlider" class="slider  singleSlider"></div></td>';
                    htmlins += '   		     		</tr>';
                    htmlins += '   			</table>';
                    htmlins += '		</div>';

                    if (showButtons) {
                        htmlins += '			<div class="ui-datepicker-buttonpane ui-widget-content">';
                        htmlins += '				<button class="ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all ui-datepicker-close"  type="button" id="text_close"></button>';
                        htmlins += '			</div>';
                    }


                    htmlins += '</div>';

                    htmlins += '</div>';
                }
                htmlins += '</div>';
                $('.pickerplugClass').remove();
                $('body').prepend(htmlins);

                $(document).mousedown(closePickPlug);
                $('#pickerplug .ui-datepicker-close').click(closePickPlug);

                // Timepicker 1 Slider 1
                $('#hourSlider').slider({
                    orientation: "vertical",
                    range: 'min',
                    min: 8,
                    max: 19,
                    step: 1,
                    slide: function(event, ui) {
                        writeDate(writeTime(ui.value, 'hour'), 'time');

                    }
                });
                // Timepicker 1 Slider 2
                $('#minuteSlider').slider({
                    orientation: "vertical",
                    range: 'min',
                    min: 9,
                    max: 20,
                    step: 1,
                    slide: function(event, ui) {
                        writeDate(writeTime(ui.value, 'minute'), 'time');
                    }
                });

                $('.dayPeriod').toggle(!b24Hour);
                $('#text_hour').text(loadedLang['hour']);
                $('#text_minute').text(loadedLang['minute']);
                $('#text_close').text(loadedLang['close']);
                $('#pickerplug').data('userLang', lang_);
                $('#pickerplug').data('b24Hour', b24Hour_);

                var val = $('#time').val();
                if (val == '' || val==' ') {
                    $('#time').val(parseInt(getNowHour())+1+'. - '+(parseInt(getNowHour())+2)+'. hod');
                }
            }

            $(this).bind('keydown', function(event) {
                var KeyID = event.keyCode;
                switch (KeyID)
                        {
                    case 9:
                        $('.pickerplugClass').hide('normal', function() {
                            $('#pickerplug').remove()
                        });
                        $(this).unbind('click', closePickPlug);
                        $(this).unbind('keyup', parseTime);
                        $(this).removeClass(markerClass);
                    case 13:
                        $('.pickerplugClass').hide('normal', function() {
                            $('#pickerplug').remove()
                        });
                        $(this).unbind('click', closePickPlug);
                        $(this).unbind('keyup', parseTime);
                        $(this).removeClass(markerClass);
                        break;
                    case 27:
                        $('.pickerplugClass').hide('normal', function() {
                            $('#pickerplug').remove()
                        });
                        $(this).unbind('click', closePickPlug);
                        $(this).unbind('keyup', parseTime);
                        $(this).removeClass(markerClass);
                        break;
                }
            });

            $(this).bind('focus', function() {

                if ($(this).attr('id') != $.datetime_index) {
                    $.datetime_index = $(this).attr('id');
                    $('.pickerplugClass').hide();
                }


                var top = $(this).offset().top + $(this).outerHeight();
                var left = $(this).offset().left;

                if ($(this).data('userLang') != $('#pickerplug').data('userLang') ||
                    $(this).data('b24Hour') != $('#pickerplug').data('userLang')) {
                    renderPickerPlug($(this).data('b24Hour'), $(this).data('userLang'), $(this).data('hasDatePicker'));
                }

                $('#pickerplug').css({
                    left: left + 'px',
                    top: top + 'px'
                }).show('normal');

                //set localization language to Date picker
                if ($(this).data('userLang') != 'en' && lang[$(this).data('userLang')]) {
                    $('#datepicker').datepicker('option', $.extend({},
                            $.datepicker.regional[$(this).data('userLang')]));
                    $('#datepicker').datepicker('option', $.extend($(this).data('sets')));
                } else {
                    $('#datepicker').datepicker('option', $.extend({},
                            $.datepicker.regional['']));
                    $('#datepicker').datepicker('option', $.extend($(this).data('sets')));
                }


                parseTime(this);

                if ($('#pickerplug').css('display') == 'none') {
                    $('#pickerplug').show('normal');
                }


                $(this).bind('keyup', parseTime);
                //$(this).bind('slider',writeTime);

                $(this).addClass(markerClass);

                $('#pickerplug').data('inputfield', $(this));

                if ($(this).val() == " ") {
                    $(this).val('');
                }
            });

            function parseTime(obj) {

                //parse time and date from input field
                var time = $(obj).val();
                //var time = $(obj).val() || $(this).val()).split(" ");
                time = time.replace('. ', '');
                time = time.replace(' ', '');
                time = time.replace('.', '');
                time = time.replace(' hod', '');
                time = time.split("-");

                $('#pickerplug').data('lastdate', time[0]);	//lastdate = time[0];

                $('#pickerplug').data('lasttime', time[1]);

                if (time.length < 2) {
                    time = ['08','09'];
                }

                //parse time from input

                var hour = time[0] || '08';
                var minute = time[1] || '09';

                writeTime(hour, 'hour');
                writeTime(minute, 'minute');

                $('#hourSlider').slider('option', 'value', hour);
                $('#minuteSlider').slider('option', 'value', minute);
            }


            function closePickPlug(event) {

                if (($(event.target).parents('#pickerplug').length ||
                     $(event.target).hasClass(markerClass)) &&
                    !$(event.target).hasClass('ui-datepicker-close')) {
                    return;
                }

                $('#pickerplug').hide('normal', function() {
                    $('#pickerplug').remove()
                });
                $(this).unbind('click', closePickPlug);
                $(this).unbind('keyup', parseTime);
                $(this).removeClass(markerClass);
            }


            var format;
            var MONTH_NAMES = new Array('January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
            var DAY_NAMES = new Array('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat');
            function LZ(x) {
                return(x < 0 || x > 9 ? "" : "0") + x
            }
            function formatDate(date, format) {
                format = format + "";
                var result = "";
                var i_format = 0;
                var c = "";
                var token = "";
                var y = date.getYear() + "";
                var M = date.getMonth() + 1;
                var d = date.getDate();
                var E = date.getDay();
                var H = date.getHours();
                var m = date.getMinutes();
                var s = date.getSeconds();
                var yyyy,yy,MMM,MM,dd,hh,h,mm,ss,ampm,HH,H,KK,K,kk,k;
                var value = new Object();
                if (y.length < 4) {
                    y = "" + (y - 0 + 1900);
                }
                value["y"] = "" + y;
                value["yyyy"] = y;
                value["yy"] = y.substring(2, 4);
                value["M"] = M;
                value["MM"] = LZ(M);
                value["MMM"] = MONTH_NAMES[M - 1];
                value["NNN"] = MONTH_NAMES[M + 11];
                value["d"] = d;
                value["dd"] = LZ(d);
                value["E"] = DAY_NAMES[E + 7];
                value["EE"] = DAY_NAMES[E];
                value["H"] = H;
                value["HH"] = LZ(H);
                if (H == 0) {
                    value["h"] = 12;
                } else if (H > 12) {
                    value["h"] = H - 12;
                } else {
                    value["h"] = H;
                }
                value["hh"] = LZ(value["h"]);
                if (H > 11) {
                    value["K"] = H - 12;
                } else {
                    value["K"] = H;
                }
                value["k"] = H + 1;
                value["KK"] = LZ(value["K"]);
                value["kk"] = LZ(value["k"]);
                if (H > 11) {
                    value["a"] = "PM";
                } else {
                    value["a"] = "AM";
                }
                value["m"] = m;
                value["mm"] = LZ(m);
                value["s"] = s;
                value["ss"] = LZ(s);
                while (i_format < format.length) {
                    c = format.charAt(i_format);
                    token = "";
                    while ((format.charAt(i_format) == c) && (i_format < format.length)) {
                        token += format.charAt(i_format++);
                    }
                    if (value[token] != null) {
                        result = result + value[token];
                    } else {
                        result = result + token;
                    }
                }
                return result;
            }
            function _isInteger(val) {
                var digits = "1234567890";
                for (var i = 0; i < val.length; i++) {
                    if (digits.indexOf(val.charAt(i)) == -1) {
                        return false;
                    }
                }
                return true;
            }
            function _getInt(str, i, minlength, maxlength) {
                for (var x = maxlength; x >= minlength; x--) {
                    var token = str.substring(i, i + x);
                    if (token.length < minlength) {
                        return null;
                    }
                    if (_isInteger(token)) {
                        return token;
                    }
                }
                return null;
            }
            function getDateFromFormat(val, format) {
                val = val + "";
                format = format + "";
                var i_val = 0;
                var i_format = 0;
                var c = "";
                var token = "";
                var token2 = "";
                var x,y;
                var now = new Date();
                var year = now.getYear();
                var month = now.getMonth() + 1;
                var date = 1;
                var hh = now.getHours();
                var mm = now.getMinutes();
                var ss = now.getSeconds();
                var ampm = "";
                while (i_format < format.length) {
                    c = format.charAt(i_format);
                    token = "";
                    while ((format.charAt(i_format) == c) && (i_format < format.length)) {
                        token += format.charAt(i_format++);
                    }
                    if (token == "yyyy" || token == "yy" || token == "y") {
                        if (token == "yyyy") {
                            x = 4;
                            y = 4;
                        }
                        if (token == "yy") {
                            x = 2;
                            y = 2;
                        }
                        if (token == "y") {
                            x = 2;
                            y = 4;
                        }
                        year = _getInt(val, i_val, x, y);
                        if (year == null) {
                            return 0;
                        }
                        i_val += year.length;
                        if (year.length == 2) {
                            if (year > 70) {
                                year = 1900 + (year - 0);
                            } else {
                                year = 2000 + (year - 0);
                            }
                        }
                    } else if (token == "MMM" || token == "NNN") {
                        month = 0;
                        for (var i = 0; i < MONTH_NAMES.length; i++) {
                            var month_name = MONTH_NAMES[i];
                            if (val.substring(i_val, i_val + month_name.length).toLowerCase() == month_name.toLowerCase()) {
                                if (token == "MMM" || (token == "NNN" && i > 11)) {
                                    month = i + 1;
                                    if (month > 12) {
                                        month -= 12;
                                    }
                                    i_val += month_name.length;
                                    break;
                                }
                            }
                        }
                        if ((month < 1) || (month > 12)) {
                            return 0;
                        }
                    } else if (token == "EE" || token == "E") {
                        for (var i = 0; i < DAY_NAMES.length; i++) {
                            var day_name = DAY_NAMES[i];
                            if (val.substring(i_val, i_val + day_name.length).toLowerCase() == day_name.toLowerCase()) {
                                i_val += day_name.length;
                                break;
                            }
                        }
                    } else if (token == "MM" || token == "M") {
                        month = _getInt(val, i_val, token.length, 2);
                        if (month == null || (month < 1) || (month > 12)) {
                            return 0;
                        }
                        i_val += month.length;
                    } else if (token == "dd" || token == "d") {
                        date = _getInt(val, i_val, token.length, 2);
                        if (date == null || (date < 1) || (date > 31)) {
                            return 0;
                        }
                        i_val += date.length;
                    } else if (token == "hh" || token == "h") {
                        hh = _getInt(val, i_val, token.length, 2);
                        if (hh == null || (hh < 1) || (hh > 12)) {
                            return 0;
                        }
                        i_val += hh.length;
                    } else if (token == "HH" || token == "H") {
                        hh = _getInt(val, i_val, token.length, 2);
                        if (hh == null || (hh < 0) || (hh > 23)) {
                            return 0;
                        }
                        i_val += hh.length;
                    } else if (token == "KK" || token == "K") {
                        hh = _getInt(val, i_val, token.length, 2);
                        if (hh == null || (hh < 0) || (hh > 11)) {
                            return 0;
                        }
                        i_val += hh.length;
                    } else if (token == "kk" || token == "k") {
                        hh = _getInt(val, i_val, token.length, 2);
                        if (hh == null || (hh < 1) || (hh > 24)) {
                            return 0;
                        }
                        i_val += hh.length;
                        hh--;
                    } else if (token == "mm" || token == "m") {
                        mm = _getInt(val, i_val, token.length, 2);
                        if (mm == null || (mm < 0) || (mm > 59)) {
                            return 0;
                        }
                        i_val += mm.length;
                    } else if (token == "ss" || token == "s") {
                        ss = _getInt(val, i_val, token.length, 2);
                        if (ss == null || (ss < 0) || (ss > 59)) {
                            return 0;
                        }
                        i_val += ss.length;
                    } else if (token == "a") {
                        if (val.substring(i_val, i_val + 2).toLowerCase() == "am") {
                            ampm = "AM";
                        } else if (val.substring(i_val, i_val + 2).toLowerCase() == "pm") {
                            ampm = "PM";
                        } else {
                            return 0;
                        }
                        i_val += 2;
                    } else {
                        if (val.substring(i_val, i_val + token.length) != token) {
                            return 0;
                        } else {
                            i_val += token.length;
                        }
                    }
                }
                if (i_val != val.length) {
                    return 0;
                }
                if (month == 2) {
                    if (((year % 4 == 0) && (year % 100 != 0) ) || (year % 400 == 0)) {
                        if (date > 29) {
                            return 0;
                        }
                    } else {
                        if (date > 28) {
                            return 0;
                        }
                    }
                }
                if ((month == 4) || (month == 6) || (month == 9) || (month == 11)) {
                    if (date > 30) {
                        return 0;
                    }
                }
                var newdate = new Date(year, month - 1, date, hh, mm, ss);
                return newdate.getTime();
            }
            function parseDate(val) {
                var preferEuro = (arguments.length == 2) ? arguments[1] : false;
                generalFormats = new Array('y-M-d', 'MMM d, y', 'MMM d,y', 'y-MMM-d', 'd-MMM-y', 'MMM d');
                monthFirst = new Array('M/d/y', 'M-d-y', 'M.d.y', 'MMM-d', 'M/d', 'M-d');
                dateFirst = new Array('d/M/y', 'd-M-y', 'd.M.y', 'd-MMM', 'd/M', 'd-M');
                var checkList = new Array('generalFormats', preferEuro ? 'dateFirst' : 'monthFirst', preferEuro ? 'monthFirst' : 'dateFirst');
                var d = null;
                for (var i = 0; i < checkList.length; i++) {
                    var l = window[checkList[i]];
                    for (var j = 0; j < l.length; j++) {
                        d = getDateFromFormat(val, l[j]);
                        if (d != 0) {
                            return new Date(d);
                        }
                    }
                }
                return null;
            }

            function writeTime(fragment, type) {

                switch (type) {
                    case 'hour':
                        var hours = parseInt(fragment, 10);

                        if (hours < 10) {
                            hours = '0'.concat(hours);
                        }
                        if (fragment < 10) {
                            fragment = '0'.concat(parseInt(fragment));
                        }

                        $('#tpSelectedTime .selHrs').html('<input id="hoursInput" type="text" maxlength="2" size="1" value="' + hours + '" onFocus="this.select()"/>');
                        $('#hoursInput').bind('keyup', function() {
                            setTimeout(function() {
                                moveSlider('#tpSelectedTime .selHrs input', '#hourSlider');
                                checkHours('#tpSelectedTime .selHrs input', $('#pickerplug').data('b24Hour'), '#hourSlider');
                            }, 750)
                        });
                        $('#hoursInput').bind('blur', function() {
                            checkHours('#tpSelectedTime .selHrs input', $('#pickerplug').data('b24Hour'), '#hourSlider');
                        });
                        time = fragment + ':' + $('#tpSelectedTime .selMins input').val();
                        break;
                    case 'minute':
                        minutes = ((fragment < 10) ? '0' : '') + parseInt(fragment, 10);
                        $('#tpSelectedTime .selMins').html('<input id="minutesInput" type="text" maxlength="2" size="1" onFocus="this.select()" value="' + minutes + '" />');
                        $('#minutesInput').bind('keyup', function() {
                            setTimeout(function() {
                                moveSlider('#tpSelectedTime .selMins input', '#minuteSlider');
                                checkMinutes('#tpSelectedTime .selMins input', $('#pickerplug').data('b24Hour'), '#minuteSlider');
                            }, 750)
                        });
                        $('#minutesInput').bind('blur', function() {
                            checkMinutes('#tpSelectedTime .selMins input', $('#pickerplug').data('b24Hour'), '#minuteSlider');
                        });
                        time = $('#tpSelectedTime .selHrs input').val() + ':' + minutes;
                        break;
                }
                return time;
            }


            function writeDate(dateTime, type) {
                switch (type) {
                    case 'time':
                        $('#pickerplug').data('lasttime', dateTime);
                        var time = dateTime.split(':');
                        var lstDate = parseDate($('#pickerplug').data('lastdatestring'));
                        if (lstDate == null) {
                            lstDate = new Date();
                        }

                        lstDate.setHours(parseInt(time[0], 10));
                        lstDate.setMinutes(parseInt(time[1], 10));
                        $('#pickerplug').data('lastdate', lstDate)
                        break;
                    default:
                        var finalDateTime = parseDate(dateTime);

                        var time = $('#pickerplug').data('lasttime');
                        if (time != null && time.indexOf(':') > 0) {
                            time = time.split(':');
                            finalDateTime.setHours(parseInt(time[0], 10));
                            finalDateTime.setMinutes(parseInt(time[1], 10));
                        }

                        $('#pickerplug').data('lastdate', finalDateTime);
                        $('#pickerplug').data('lastdatestring', dateTime);
                }

                $($('#pickerplug').data('inputfield')).val(
                        formatDate($('#pickerplug').data('lastdate'), format) + ' hod'
                        );
            }

            function moveSlider(val, slide) {
                $(slide).slider('option', 'value', $(val).val());
            }

            function checkHours(id, b24Hour, slider) {
                var hour = parseInt($(id).val());
                var finalHour = hour;
                //keep number to be double cipher
                if (hour < 10 && hour > 0) {
                    finalHour = '0' + hour;
                }
                if (hour < 0) {
                    finalHour = '00';
                }

                if (hour > 23) {
                    finalHour = '23';
                }
                if (!hour) {
                    finalHour = '00';
                }
                $(id).val(finalHour);
                writeDate(writeTime(finalHour, 'hour'), 'time');
                $(slider).slider('option', 'value');
            }

            function checkMinutes(id, b24Hour, slider, format) {
                var minutes = parseInt($(id).val());
                var finalMinutes = minutes;
                //keep number to be double cipher
                if (minutes < 10 && minutes > 0) {
                    finalMinutes = '0' + minutes;
                }
                if (minutes < 0) {
                    finalMinutes = '00';
                }
                if (minutes > 59) {
                    finalMinutes = '59';
                }
                if (!minutes) {
                    finalMinutes = '00';
                }
                $(id).val(finalMinutes);
                writeDate(writeTime(finalMinutes, 'minute'), 'time');
                $(slider).slider('option', 'value', finalMinutes);
            }

            function getNowHour(){
                var date = new Date();
                var hr = date.getHours();
                if(parseInt(date.getMinutes()) > 30){
                    return (parseInt(hr)+1);
                }
                else{
                    return parseInt(hr);
                }
            }


        });
    }

})(jQuery);
