/*
 * jCal-light calendar multi-day and multi-month datepicker plugin for jQuery
 *	version 0.3.4
 * Author: Jim Palmer
 * Released under MIT license.
 */
(function($) {
	$.fn.jCal = function (opt) {
		$.jCal(this, opt);
	};
	$.jCal = function (target, opt) {
		opt = $.extend({
			day:			new Date(),									// date to drive first cal
			days:			1,											// default number of days user can select
			showMonths:		1,											// how many side-by-side months to show
			bLastDisplayMode: 1,
			dCheck:			function (day) { return true; },			// handler for checking if single date is valid or not
			
			dFirst:         [],
			dLast:          [],
			
			callback:		function (day, days) { return true; },		// callback function for click on date
			selectedBG:		'rgb(0, 143, 214)',							// default bgcolor for selected date cell
			defaultBG:		'rgb(255, 255, 255)',						// default bgcolor for unselected date cell
			dayOffset:		0,											// 0=week start with sunday, 1=week starts with monday
			forceWeek:		false,										// true=force selection at start of week, false=select days out from selected day
			dow:			['S', 'M', 'T', 'W', 'T', 'F', 'S'],		// days of week - change this to reflect your dayOffset
			ml:				['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
			ms:				['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
			_target:		target										// target DOM element - no need to set extend this variable
		}, opt);
		opt.day = new Date(opt.day.getFullYear(), opt.day.getMonth(), opt.day.getDate());
		if ( !$(opt._target).data('days') ) $(opt._target).data('days', opt.days);
		$(target).stop().empty();
		for (var sm=0; sm < opt.showMonths; sm++)
			$(target).append('<div class="jCalMo' + ((sm == 0 || sm == 3) ? ' display-none'  : '' ) + '"></div>');
		opt.cID = 'c' + $('.jCalMo').length;
		$('.jCalMo', target).each(
			function (ind) {
				drawCalControl($(this), $.extend( {}, opt, { 'ind':ind, 
						'day':new Date( new Date( opt.day.getTime() ).setMonth( new Date( opt.day.getTime() ).getMonth() + ind ) ) }
					));
				drawCal($(this), $.extend( {}, opt, { 'ind':ind, 
						'day':new Date( new Date( opt.day.getTime() ).setMonth( new Date( opt.day.getTime() ).getMonth() + ind ) ) }
					));
					
				 //alert(  parseInt( new Date( opt.day.getTime() ).getMonth()   )  + parseInt(ind) )	
			     //alert(   new Date( new Date( opt.day.getTime() ).setMonth( parseInt(new Date( opt.day.getTime() ).getMonth())+ parseInt(ind) ) )  )	
			     
			     	
			});
		if ( $(opt._target).data('day') && $(opt._target).data('days') ) 
			reSelectDates(target, $(opt._target).data('day'), $(opt._target).data('days'), opt);
			
			
			
			//#===============================
			//bind events
	        $('#calOneMounth').bind('change', function (e) {
	        
	               var sChangeDate =  $('#calOneMounth').val();
	                
	               if(sChangeDate != '0'){
	                   var sRexExpPattern      = /([0-9]*)_([0-9]*)/i;
	                   
	                   aMatches = sChangeDate.match(sRexExpPattern);
	                   
	                   //alert(aMatches)
		               opt.day = new Date(parseInt(aMatches[2]), parseInt(aMatches[1]), 1);
		               
		               //alert((opt.day.getFullYear()))
		               
		               opt.day.setMonth((opt.day.getMonth() - 1));
		               
		               
				        if ( !$(opt._target).data('days') ) $(opt._target).data('days', opt.days);
				        $(target).stop().empty();
				        for (var sm=0; sm < opt.showMonths; sm++)
				            $(target).append('<div class="jCalMo' + ((sm == 0 || sm == 3) ? ' display-none'  : '' ) + '"></div>');
				        opt.cID = 'c' + $('.jCalMo').length;
				        $('.jCalMo', target).each(
				            function (ind) {
				                drawCalControl($(this), $.extend( {}, opt, { 'ind':ind, 
				                        'day':new Date( new Date( opt.day.getTime() ).setMonth( new Date( opt.day.getTime() ).getMonth() + ind ) ) }
				                    ));
				                drawCal($(this), $.extend( {}, opt, { 'ind':ind, 
				                        'day':new Date( new Date( opt.day.getTime() ).setMonth( new Date( opt.day.getTime() ).getMonth() + ind ) ) }
				                    ));
				            });
				        if ( $(opt._target).data('day') && $(opt._target).data('days') ) 
				            reSelectDates(target, $(opt._target).data('day'), $(opt._target).data('days'), opt);
	                   
	               }    
	                   
	              
	              
	              
	          }
	        );
	        
			//#===============================
			
	};
	
	
	
	
	
	
	function drawCalControl (target, opt) {
	   //alert(opt.showMonths)
		/*$(target).append(
			'<div class="jCal">' 
			
				  + '<div class="jCal-top"></div>' +
				  
					'<div class="month">' + 
						'<span class="monthYear">' + opt.day.getFullYear() + '</span>' +
						'<span class="monthName">' + opt.ml[opt.day.getMonth()] + '</span>' +
					'</div>' +
					
			'</div>'); */
		$(target).append(
			'<div class="jCal">' 
			
				  + '<div class="jCal-top"></div>' +
				  
					'<div class="month">' + 
						 opt.ml[opt.day.getMonth()] + ' ' +
						 opt.day.getFullYear() +  
					'</div>' +
					
			'</div>');
			
			
		$('.calendar_panel').find('.left').bind('click', $.extend( {}, opt ),
			function (e) {
				if ($('.jCalMask', e.data._target).length > 0) return false;
				var mD = { w:0, h:0 };
				$('.jCalMo', e.data._target).each( function () { 
						mD.w += $(this).width() + parseInt($(this).css('padding-left')) + parseInt($(this).css('padding-right')); 
						var cH = $(this).height() + parseInt($(this).css('padding-top')) + parseInt($(this).css('padding-bottom')); 
						mD.h = ((cH > mD.h) ? cH : mD.h);
					} );
				$(e.data._target).prepend('<div class="jCalMo"></div>');
				e.data.day = new Date( $('div[id*=' + e.data.cID + 'd_]:first', e.data._target).attr('id').replace(e.data.cID + 'd_', '').replace(/_/g, '/') );
				e.data.day.setDate(1);
				e.data.day.setMonth( e.data.day.getMonth() - 1 );
				drawCalControl($('.jCalMo:first', e.data._target), e.data);
				drawCal($('.jCalMo:first', e.data._target), e.data);
				if (e.data.showMonths > 1) {
					$('.right', e.data._target).clone(true).appendTo( $('.jCalMo:eq(1) .jCal', e.data._target) );
					$('.left:last, .right:last', e.data._target).remove();
				}
				$(e.data._target).append('<div class="jCalSpace" style="width:'+mD.w+'px; height:'+mD.h+'px;"></div>');
				$('.jCalMo', e.data._target).wrapAll(
					'<div class="jCalMask" style="clip:rect(0px '+mD.w+'px '+mD.h+'px 0px); width:'+ ( mD.w + ( mD.w / e.data.showMonths ) ) +'px; height:'+mD.h+'px;">' + 
						'<div class="jCalMove"></div>' +
					'</div>');
				$('.jCalMove', e.data._target).css('margin-left', ( ( mD.w / e.data.showMonths ) * -1 ) + 'px').css('opacity', 0.5).animate({ marginLeft:'0px' }, 'fast',
					function () {
						$(this).children('.jCalMo:not(:last)').appendTo( $(e.data._target) );
						$('.jCalSpace, .jCalMask', e.data._target).empty().remove();
						if ( $(e.data._target).data('day') ) 
							reSelectDates(e.data._target, $(e.data._target).data('day'), $(e.data._target).data('days'), e.data);
					});
					
            
            	$('.jCalMo').each(function (ind) {
            	       //alert(ind)
            	       if(ind == 0 || ind == 3){
            	          $(this).addClass('display-none');
            	       }else{
            	          $(this).removeClass('display-none');
            	       }
            	
            	})

			});
		
		//$('.calendar_panel').find(' .right ').bind('click', function (){alert("das")} );
			
		$('.calendar_panel').find('.right').bind('click', $.extend( {}, opt ),
			function (e) {
				if ($('.jCalMask', e.data._target).length > 0) return false;
				var mD = { w:0, h:0 };
				$('.jCalMo', e.data._target).each( function () { 
						mD.w += $(this).width() + parseInt($(this).css('padding-left')) + parseInt($(this).css('padding-right')); 
						var cH = $(this).height() + parseInt($(this).css('padding-top')) + parseInt($(this).css('padding-bottom')); 
						mD.h = ((cH > mD.h) ? cH : mD.h);
					} );
				$(e.data._target).append('<div class="jCalMo"></div>');
				e.data.day = new Date( $('div[id^=' + e.data.cID + 'd_]:last', e.data._target).attr('id').replace(e.data.cID + 'd_', '').replace(/_/g, '/') );
				e.data.day.setDate(1);
				e.data.day.setMonth( e.data.day.getMonth() + 1 );
				drawCalControl($('.jCalMo:last', e.data._target), e.data);
				drawCal($('.jCalMo:last', e.data._target), e.data);
				if (e.data.showMonths > 1) {
					$('.left', e.data._target).clone(true).prependTo( $('.jCalMo:eq(1) .jCal', e.data._target) );
					$('.left:first, .right:first', e.data._target).remove();
				}
				$(e.data._target).append('<div class="jCalSpace" style="width:'+mD.w+'px; height:'+mD.h+'px;"></div>');
				$('.jCalMo', e.data._target).wrapAll(
					'<div class="jCalMask" style="clip:rect(0px '+mD.w+'px '+mD.h+'px 0px); width:'+ ( mD.w + ( mD.w / e.data.showMonths ) ) +'px; height:'+mD.h+'px;">' + 
						'<div class="jCalMove"></div>' +
					'</div>');
				$('.jCalMove', e.data._target).css('opacity', 0.5).animate({ marginLeft:( ( mD.w / e.data.showMonths ) * -1 ) + 'px' }, 'fast',
					function () {
						$(this).children('.jCalMo:not(:first)').appendTo( $(e.data._target) );
						$('.jCalSpace, .jCalMask', e.data._target).empty().remove();
						if ( $(e.data._target).data('day') ) 
							reSelectDates(e.data._target, $(e.data._target).data('day'), $(e.data._target).data('days'), e.data);
						$(this).children('.jCalMo:not(:first)').removeClass('');
					});
				
				
				
				$('.jCalMo').each(function (ind) {
                       //alert(ind)
                       //$(this).removeClass('display-none');
                       
                       if(ind == 1 || ind == 4){
                          $(this).addClass('display-none');
                       }else{
                          $(this).removeClass('display-none');
                       }
                
                })
                
                	
					
			});
		$('.jCal', target).each(
			function () {
				var width = $(this).parent().width() - ( $('.left', this).width() || 0 ) - ( $('.right', this).width() || 0 );
				//$('.month', this).css('width', width).find('.monthName, .monthYear').css('width', ((width / 2) - 10 ));
			});
	};	
	function reSelectDates (target, day, days, opt) {
		var fDay = new Date(day.getTime());
		var sDay = new Date(day.getTime());
		
		//test :>:)!!
		if($('#calOne').find('.selectedDay').length > 0){
        	days = ($('#calOne').find('.selectedDay').length);
        	$(target).data('days', days );
        	//alert(1);
        } else if(parseInt($('#selected_past').val()) == 1){
        	days = countDays(new Date(parseInt($('#selected_start').val())), new Date(parseInt($('#selected_end').val()))) + 1;
        	$(target).data('days', days );
        	//alert(2);
        }
		//test :>:)!!
		
		for (var fC = false, di = 0, dC = days; di < dC; di++) {
			var dF = $(target).find('div[id*=d_' + (sDay.getMonth() + 1) + '_' + sDay.getDate() + '_' + sDay.getFullYear() + ']');
			if ( dF.length > 0 ) {
				dF.stop().addClass('selectedDay');
				fC = true;
			}
			sDay.setDate( sDay.getDate() + 1 );
		}
		if ( fC && typeof opt.callback == 'function' ) opt.callback( day, days-1 );
	};
	function drawCal (target, opt) {
		for (var ds=0, length=opt.dow.length; ds < length; ds++){
			$(target).append('<div class="dow' + ((ds == 0) ? ' dow-flanks-left' : '') + ((ds == (length -1)) ? ' dow-flanks-right' : '') + '">' + opt.dow[ds] + '</div> ' + ((ds < (length -1)) ?  ' <div class="month-delimeter"></div>': '' ));
		}	
		var fd = new Date( new Date( opt.day.getTime() ).setDate(1) );
		var ldlm = new Date( new Date( fd.getTime() ).setDate(0) );
		var ld = new Date( new Date( new Date( fd.getTime() ).setMonth( fd.getMonth() + 1 ) ).setDate(0) );
		var copt = {fd:fd.getDay(), lld:ldlm.getDate(), ld:ld.getDate()};
		var offsetDayStart = ( ( copt.fd < opt.dayOffset ) ? ( opt.dayOffset - 7 ) : 1 );
		var offsetDayEnd = ( ( ld.getDay() < opt.dayOffset ) ? ( 7 - ld.getDay() ) : ld.getDay() );
		for ( var d = offsetDayStart, dE = ( copt.fd + copt.ld + ( 7 - offsetDayEnd ) ); d < dE; d++){
		
		var iTypeBox = opt.dCheck( new Date( (new Date( fd.getTime() )).setDate( d - ( copt.fd - opt.dayOffset ) ) ) , opt.dFirst, opt.dLast); 
		var sBox = '';
		    if(iTypeBox == 1) {
              sBox = 'day';
            }else if(iTypeBox == 2 ){
              sBox = 'invdayHalf';
            }else if(iTypeBox == 3 ){
              sBox = 'invdayHalf-left';
            }else if(iTypeBox == 4 ){
              sBox = 'invdayHalf-left selected-left';
            }else if(iTypeBox == 5 ){
              sBox = 'invdayHalf selected-right';
            } else if(iTypeBox == 0 ){
              sBox = 'invday';
            } else if(iTypeBox == 6 ){
              sBox = 'day selectedDay';
            }else if(iTypeBox == 7 ){
              sBox = 'pending';
            }else if(iTypeBox == 8 ){
              sBox = 'pending-left';
            }else if(iTypeBox == 9 ){
              sBox = 'pending-right';
            }else if(iTypeBox == 10 ){
              sBox = 'pending-left pending-selected-left';
            }else if(iTypeBox == 11 ){
              sBox = 'pending-right pending-selected-right';
            }
			
			$(target).append(
				(( d <= ( copt.fd - opt.dayOffset ) ) ? 
					'<div id="' + opt.cID + 'd' + d + '" class="pday"><div style="margin-top:5px">' + ( copt.lld - ( ( copt.fd - opt.dayOffset ) - d ) ) + '</div></div>' 
					: ( ( d > ( ( copt.fd - opt.dayOffset ) + copt.ld ) ) ?
						'<div id="' + opt.cID + 'd' + d + '" class="aday"><div style="margin-top:5px">' + ( d - ( ( copt.fd - opt.dayOffset ) + copt.ld ) ) + '</div></div>' 
						: '<div id="' + opt.cID + 'd_' + (fd.getMonth() + 1) + '_' + ( d - ( copt.fd - opt.dayOffset ) ) + '_' + fd.getFullYear() + '" class="' +
							(sBox) + '"><div style="margin-top:5px">' + ( d - ( copt.fd - opt.dayOffset ) )  + '<div></div>'
					) 
				)
			);
		
		}	
		
		
		//moje
		//$(target).find('div[id^=' + opt.cID + 'd]:nth-child(7n)').css({'borderRightWidth':'1px', 'borderRightStyle': 'solid', 'borderColor': '#DDDBC9'});
		$(target).find('div[id^=' + opt.cID + 'd]:nth-child(7n)').css({'margin-right': '0px'});
		//$(target).find('div[id^=' + opt.cID + 'd]:nth-child(3n)').css({'margin-left': '0px', 'color' : 'blue'});
		//moje
		
		$(target).find('div[id^=' + opt.cID + 'd]:first, div[id^=' + opt.cID + 'd]:nth-child(7n+1)').before( '<br style="clear:both; font-size:0.1em;" />' );
		
		//reset
		//jQuery(target).find('.cantSelect').removeClass('cantSelect');
		
		$(target).find('div[id^=' + opt.cID + 'd_]:not(.invday,.pending)').bind("mouseenter mouseleave click", $.extend( {}, opt ),
			function(e){
			         
			        var bCanSelect = true;
			        var bCanSelect2 = true;
			        var iMindays = (opt.min_days + 1);
			        var iMaxSpace = (opt.max_space);
			        var iCantSelectEnd = 0;
			        var iMaxAll = 0;
			        var iCantSelectEnd2 =  0;
			        var bReplace1 = false;
			        var bReplace2 = false;
                    //var bCanSelect2 = false;
			        var bCanSelectCyclic = true;
			        var bCyclicMode = false;
			        var bCanSelectCyclic2 = true;
			        var bCyclicMode2 = false;
			
					if ($('.jCalMask', e.data._target).length > 0) return false;
					var osDate = new Date ( $(this).attr('id').replace(/c[0-9]{1,}d_([0-9]{1,2})_([0-9]{1,2})_([0-9]{4})/, '$1/$2/$3') );
					if (e.data.forceWeek) osDate.setDate( osDate.getDate() + (e.data.dayOffset - osDate.getDay()) );
					var sDate = new Date ( osDate.getTime() );
					if(opt.interactive){
						if (e.type == 'click')
							$('div[id*=d_]', e.data._target).stop().removeClass('selectedDay').removeClass('overDay').css('backgroundColor', '');
					}
					for (var di = 0, ds = $(e.data._target).data('days'); di < ds; di++) {
						var currDay = $(e.data._target).find('#' + e.data.cID + 'd_' + ( sDate.getMonth() + 1 ) + '_' + sDate.getDate() + '_' + sDate.getFullYear());
						
						//zatrzymuje dzialanie
						//if ( currDay.length == 0 || $(currDay).hasClass('invday') ) break;
						
						//zatrzymuje dzialanie
                        if ( currDay.length == 0) {break;}
                        
                        if(!opt.interactive){
                         break;
                        }
                        
                        var bFountCyclicYet = false;
                        //sprawdzamy czy jest cykliczność właczona
                        if((di == 0   || di == ds - 1) && opt.aCyclic.length > 0){
                           for(var ic = 0; ic < opt.aCyclic.length; ic++  ){
                        	   //alert(opt.aCyclic[ic][3]);
                        	    if(di == 0 ){
                        	    	bCyclicMode  = false;
                        	    } else {
                        	    	bCyclicMode2  = false;
                        	    }
                        	   	if(opt.aCyclic[ic][0] < sDate.getTime() && opt.aCyclic[ic][1] > sDate.getTime()){
                        	   		if(di == 0 ){
                        	   		   bCyclicMode  = true;
                        	   		} else {
                        	   			bCyclicMode2  = true;
                        	   		}
                        	   		if(bLastDisplayMode == 1 && (di == 0 || di == ds - 1)){
                        	   			setCalOneDaysCyclic(opt.adm_min_days, opt.aCyclic[ic][2], true);
                        	   			bLastDisplayMode = 2;
                        	   			//alert(ds + ' => ' + opt.adm_min_days);
                        	   			//ds = parseInt(jQuery('#calOneDays').val());
                        	   			//di = 0;
                        	   			
                        	   		}
                        	   		/*if(di == ds - 1){
                        	   			alert(sDate);
                        	   		}*/
                        	   		for(var icw = 0; icw <  opt.aCyclic[ic][3].length; icw++){
                        	   			if(di == 0 ){
                        	   			   bCanSelectCyclic = false;
                        	   			} else {
                        	   				bCanSelectCyclic2 = false;
                        	   			}
                        	   			if(parseInt(sDate.getDay()) == parseInt(opt.aCyclic[ic][3][icw])){
                        	   			   if(di == 0 ){	
                        	   			      bCanSelectCyclic = true;
                        	   			   } else {
                        	   				   bCanSelectCyclic2 = true;
                        	   			   }
                        	   			   break;
                        	   			}
                        	   		}
                        	   		if(!bCanSelectCyclic || !bCanSelectCyclic2){
                        	   			$(e.data._target).find('.overDay').removeClass('overDay').addClass('cantSelect'); 
                        	   			break;
                        	   		}
                        	   		
                        	   	}
                        	   	
                           }
                        } 
                        
                        if(!bCanSelectCyclic){
                        	bCanSelectCyclic2 = false; 
                        } else if(!bCanSelectCyclic2){
                        	bCanSelectCyclic = false; 
                        }
                        
                        if((opt.aCyclic.length == 0 || !bCyclicMode || !bCyclicMode2) && bCanSelectCyclic2 && bCanSelectCyclic){
                        	bCanSelectCyclic = true;
                        	bCanSelectCyclic2 = true;
                        }
                        
                        if(((di == (ds - 1))) && !bCyclicMode && !bCyclicMode2){
                        //if(di == 0 && !bCyclicMode && !bCyclicMode2){
                        	if(bLastDisplayMode == 2){
                        	   setCalOneDaysCyclic(opt.adm_min_days, false, bLastDisplayMode == 2);
                        	   bLastDisplayMode = 1;
                        	}
                        }
                        
                        //
                        if ($(currDay).hasClass('invday') || $(currDay).hasClass('pending') || (di > 0 && ($(currDay).hasClass('pending-right') || $(currDay).hasClass('invdayHalf')))){
                            
                            $(e.data._target).find('.overDay').removeClass('overDay').addClass('cantSelect'); 
                            
                            /*
                             * gdy przechodzimy z cyklicznosci do trybu normalnego mozemy najechc na koniec terminu, ale nie dojdzi do di == (ds - 1)
                             * stad musimy zabezpieczyc cofniecie do ostatniego elemntu
                             */
                            if(bLastDisplayMode == 2 && !bCyclicMode && !bCyclicMode2){
                               //console.log('bCyclicMode' + (bCyclicMode) + ' ,bCyclicMode2:'+ bCyclicMode2)
                         	   setCalOneDaysCyclic(opt.adm_min_days, false, bLastDisplayMode == 2);
                         	   bLastDisplayMode = 1;
                         	}
                            
                            
                            var sBackDate = new Date($(this).attr('id').replace(/c[0-9]{1,}d_([0-9]{1,2})_([0-9]{1,2})_([0-9]{4})/, '$1/$2/$3') ); 
                                sBackDate.setDate(parseInt(sBackDate.getDate()) + (di -1));
                                
                            var oNext  =  $(e.data._target).find('#' + e.data.cID + 'd_' + ( sBackDate.getMonth() + 1 ) + '_' + (sBackDate.getDate()) + '_' + sBackDate.getFullYear());     
                            
                            if($(oNext).hasClass('invdayHalf-left')){
                                $(oNext).removeClass('overDay').addClass('cant-select-left-blue');
                                bReplace1 = true;
                             } else if($(oNext).hasClass('pending-left')){
                                $(oNext).removeClass('overDay').addClass('cant-select-left-pending');
                                bReplace1 = true;
                            }
                            
                            
                           var sBackDate = new Date($(this).attr('id').replace(/c[0-9]{1,}d_([0-9]{1,2})_([0-9]{1,2})_([0-9]{4})/, '$1/$2/$3') ); 
                                sBackDate.setDate(parseInt(sBackDate.getDate()));
                                
                            var oNext  =  $(e.data._target).find('#' + e.data.cID + 'd_' + ( sBackDate.getMonth() + 1 ) + '_' + (sBackDate.getDate()) + '_' + sBackDate.getFullYear());     
                            
                            if($(oNext).hasClass('invdayHalf')){
                                bReplace2 = true;
                                $(oNext).removeClass('overDay').addClass('cant-select-right-blue');
                            } else if($(oNext).hasClass('pending-right')){
                                bReplace2 = true;
                                $(oNext).removeClass('overDay').addClass('cant-select-right-pending');
                            
                            }  
                            
                            //alert("das");
                            //$('#notyfication_box').html(oDictonary[3]);
                                  $('#notyfication_box_error_mes').html(oDictonary[3]);
                                  $('#notyfication_box_error').show();
                                  $('#notyfication_box_correct').hide();
                                  //$('#promotion-calc').hide('fast');
                            
                            break;
                        }
						
						//najezdza na date
						if ( e.type == 'mouseenter' ){
						 
						
						//dodajemy znacznik current_first	
					    if(di == 0){
					    	$(currDay).addClass('current_day');		
					    }
							
						 
						 if(!bIndigent){
						 
						 //warunki przed
						 //#======
							 if(di == 0){
								 
								 //var sBackDate = new Date(sDate); 
								 var sBackDate = new Date($(this).attr('id').replace(/c[0-9]{1,}d_([0-9]{1,2})_([0-9]{1,2})_([0-9]{4})/, '$1/$2/$3') ); 
								     sBackDate.setDate((sBackDate.getDate() - 1));
								 var sBackDateOneMoreTime =  new Date(sBackDate.getTime());
								 	 sBackDateOneMoreTime.setDate((sBackDateOneMoreTime.getDate() - 1));
								 for(iInc = 0; iInc < iMindays - 2; iInc++){  
								  
								  var oPrevious  =  $(e.data._target).find('#' + e.data.cID + 'd_' + ( sBackDate.getMonth() + 1 ) + '_' + (sBackDate.getDate()) + '_' + sBackDate.getFullYear());
								  var oPreviousOnce =  $(e.data._target).find('#' + e.data.cID + 'd_' + ( sBackDateOneMoreTime.getMonth() + 1 ) + '_' + (sBackDateOneMoreTime.getDate()) + '_' + sBackDateOneMoreTime.getFullYear());
									  
								  	 //alert($(oPrevious).attr('class') + ' ' + $(oPreviousOnce).attr('class'));
									  
									 if(($(oPrevious).hasClass('invday') || $(oPrevious).hasClass('pending'))
										 ||
										(($(oPrevious).hasClass('invdayHalf-left') || $(oPrevious).hasClass('pending-left'))  && $(oPreviousOnce).hasClass('day'))
									 	){
									       if(iInc >= 0){  
									            
									           if((iInc <= iMaxSpace)){
	                                            // jQuery('#test').html('good'+  sBackDate.getDate());
	                                              bCanSelect = true;
	                                            break;
	                                           }
									       
									           iCantSelectEnd =  iMindays - iInc;
			                                   bCanSelect = false; break;
			                               }      
			                         }
			                         
			                          sBackDate.setDate((sBackDate.getDate() - 1));
			                          sBackDateOneMoreTime.setDate((sBackDateOneMoreTime.getDate() - 1));
								 
								 }
								 
								 //alert(bCanSelect + '<=1');
							 }
	                        
	                        
						      if(di == 0){
						          //var sBackDate = new Date(sDate);
						          var sBackDate = new Date($(this).attr('id').replace(/c[0-9]{1,}d_([0-9]{1,2})_([0-9]{1,2})_([0-9]{4})/, '$1/$2/$3') ); 
						              sBackDate.setDate((parseInt(sBackDate.getDate()) + parseInt(ds)));
						          var sBackNextOneMoreTime =  new Date(sBackDate.getTime());
						          	  sBackNextOneMoreTime.setDate((sBackNextOneMoreTime.getDate() + 1));   
						          
						          for(iInc = 0; iInc < iMindays -2; iInc++){ 
							          
						              var oNext  =  $(e.data._target).find('#' + e.data.cID + 'd_' + ( sBackDate.getMonth() + 1 ) + '_' + (sBackDate.getDate()) + '_' + sBackDate.getFullYear());
						              var oNextOnce =  $(e.data._target).find('#' + e.data.cID + 'd_' + ( sBackNextOneMoreTime.getMonth() + 1 ) + '_' + (sBackNextOneMoreTime.getDate()) + '_' + sBackNextOneMoreTime.getFullYear());
						              
						              //alert($(oNext).attr('class') + ' ' + $(oNextOnce).attr('class'));
						              
						              if(($(oNext).hasClass('invday') || $(oNext).hasClass('pending'))
						             	  ||
										 (($(oNext).hasClass('invdayHalf') || $(oNext).hasClass('pending-right'))  && $(oNextOnce).hasClass('day'))	  
						                 ){
						              
	                                       if(iInc >= 0){  
	                                           
	                                           if((iInc <= iMaxSpace)){
							                    // jQuery('#test').html('good'+  sBackDate.getDate());
							                      
							                      //
							                      bCanSelect2 = true;
							                      
	                                            break;
	                                           }  else {
							                    // jQuery('#test').html('źle'+  sBackDate.getDate());
	                                           
							                      iCantSelectEnd =  ds + 1;
	                                                 bCanSelect2 = false;
	                                                 
	                                             break;
	                                           }
	                                       }     
	                                   }
						              
						               sBackDate.setDate((sBackDate.getDate() + 1)); 
						               sBackNextOneMoreTime.setDate((sBackNextOneMoreTime.getDate() + 1));
						          }
						          
						          //alert(iMindays + 'iMindays' + bCanSelect2 + '<=1'); 
						      
						      
						      }
					      }else{
					            bCanSelect = true;
					            bCanSelect2 = true;
					       
					      }
						 
						    
						   // jQuery('#test').html(bCanSelect + '&&' + bCanSelect2)  
						 
							 if(bCanSelect && bCanSelect2 && bCanSelectCyclic && bCanSelectCyclic2){  
							     setHoverType($,currDay, true);
								  //$('#notyfication_box').html(oDictonary[4]);
								  $('#notyfication_box_correct_mes').html(oDictonary[4]);
								  $('#notyfication_box_correct').show();
								  $('#notyfication_box_error').hide();
							 } else {
								  setHoverType($,currDay, false, di, iCantSelectEnd); 
								  //$('#notyfication_box').html(oDictonary[3]);
								  $('#notyfication_box_error_mes').html(oDictonary[3]);
								  $('#notyfication_box_error').show();
                                  $('#notyfication_box_correct').hide();
							 }
						  
						
						}
						
						//odjezdza z daty
						else if ( e.type == 'mouseleave' ){	
							
							if(di == 0){
						    	$(currDay).removeClass('current_day');		
						    }	
							
							
						  $(currDay).stop().removeClass('overDay').css('backgroundColor', '');
						  $(currDay).stop().removeClass('cantSelect').css('backgroundColor', '');
						  $(currDay).stop().removeClass('invdayHalf-hover').css('backgroundColor', '');
						  $(currDay).stop().removeClass('invdayHalf-hover-left').css('backgroundColor', '');
						  $(currDay).stop().removeClass('invdayHalf-hover').css('backgroundColor', '');
						  $(currDay).stop().removeClass('cant-select-left-blue').css('backgroundColor', '');
						  $(currDay).stop().removeClass('cant-select-right-blue').css('backgroundColor', '');
						  $(currDay).stop().removeClass('cant-select-right-pending').css('backgroundColor', '');
						  $(currDay).stop().removeClass('cant-select-left-pending').css('backgroundColor', '');
						  
						  //nowe
                          $(currDay).stop().removeClass('pending-hover-right').css('backgroundColor', '');
                          $(currDay).stop().removeClass('pending-hover-left').css('backgroundColor', '');
                          //nowe
						  
                          $(e.data._target).find('.cant-select-left-blue').removeClass('cant-select-left-blue');
						  
						}
						
						
						else if ( e.type == 'click' ){
						
						 jQuery("#loader_calendar_checker").val(0); 
						
						$(e.data._target).find('.selected-left').removeClass('selected-left');
                        $(e.data._target).find('.selected-right').removeClass('selected-right');
                        
                        $(e.data._target).find('.pending-selected-left').removeClass('pending-selected-left');
                        $(e.data._target).find('.pending-selected-right').removeClass('pending-selected-right');
						  
						  if( $(e.data._target).find('.cantSelect,.cant-select-left-blue,.cant-select-right-blue,.cant-select-left-pending,.cant-select-right-pending').length == 0){
						      $(currDay).stop().addClass('selectedDay');
                                
                               //zaznaczamy boki :)
                              $(e.data._target).find('.invdayHalf-hover-left').addClass('selected-left');
                              $(e.data._target).find('.invdayHalf-hover').addClass('selected-right');

                              $(e.data._target).find('.pending-hover-left').addClass('pending-selected-left');
                              $(e.data._target).find('.pending-hover-right').addClass('pending-selected-right');
                                      
                                						      
	                          //$('#notyfication_box').html(oDictonary[1]);  
	                          $('#notyfication_box_correct_mes_all').html(oDictonary[0]);
	                          $('#notyfication_box_error').hide();
                              $('#notyfication_box_correct').hide(); 
	                          $('#notyfication_box_correct_all').show();
	                          
	                          
	                          //przekazujemy parametr
	                          $('#selected_past').val(1);  
	                          
	                          
	                      } else {
	                          //przekazujemy parametr
	                          $('#selected_past').val(0);  
	                          
	                         //$('#notyfication_box').html(oDictonary[0]);
	                         $('#notyfication_box_correct_mes').html(oDictonary[0]); 
	                         $('#notyfication_box_correct_all').hide();
	                         
	                         
	                         
	                         //$('#calOneResult').html('');
	                         $('#element-left-info-calendar').hide('fast');
	                         $('#describe_payments-div-hidden').hide('fast');
	                         $('#promotion-calc').hide('fast');
	                           
	                         return; 
	                      }
	                        
						  
						}  
						sDate.setDate( sDate.getDate() + 1 ); 
                        


					}
					
			             
			        if(opt.interactive){   
				         //poszlo cos nie tak wiec usuwamy zaznacenia    
						 if ( e.type == 'mouseleave'){  
						   if(bReplace1){
	                          $(e.data._target).find('.cant-select-left-blue').removeClass('cant-select-left-blue').addClass('invdayHalf-left');
	                           //nowexx
                              $(e.data._target).find('.cant-select-left-pending').removeClass('cant-select-left-pending').addClass('pending-left');
                              //nowexx
	                          }
	                       if(bReplace2){   
	                          $(e.data._target).find('.cant-select-right-blue').removeClass('cant-select-right-blue').addClass('invdayHalf');
	                          $(e.data._target).find('.cant-select-right-pending').removeClass('cant-select-right-pending').addClass('pending-right');
	                          }
	                          
	                          
	                          
	                        }
						
						
						
						if (e.type == 'click') {
						    jQuery("#loader_calendar_checker").val(0);    
							e.data.day = osDate;
							e.data.callback( osDate, (di -1) );
							$(e.data._target).data('day', e.data.day);//.data('days', di);
						}
					}
					
					
					
					
			});
			
			/*$(target).find('.cantSelect').bind("mouseleave",
			function(e){
			     $('#notyfication_box').html("");
			});*/
			
			/*if($(target).find('.cantSelect').length == 0){
			     $('#notyfication_box').html("");
			}*/
			
			//dasd
			$(target).find('.invday').bind("mouseenter",
			function(e){
			
			     //$('#notyfication_box').html(oDictonary[2]);
			     $('#notyfication_box_error_mes').html(oDictonary[2]);
			     $('#notyfication_box_error').show();
                 $('#notyfication_box_correct').hide();
			     
			     
			});
			
			$(target).find('.pending').bind("mouseenter",
            function(e){
            
                 //$('#notyfication_box').html(oDictonary[2]);
                 $('#notyfication_box_error_mes').html(oDictonary[5]);
                 $('#notyfication_box_error').show();
                 $('#notyfication_box_correct').hide();
                 
                 
            });
			
			$(target).find('.invday').bind("mouseleave",
			function(e){
			     //$('#notyfication_box').html("");
			     $('#notyfication_box_error').hide();
                 $('#notyfication_box_correct').hide();
			});
			
			$('.jCalMo').bind("mouseleave",
			function(e){
			     //$('#notyfication_box').html("");
			     $('#notyfication_box_error').hide();
                 $('#notyfication_box_correct').hide();
			});
			
			
			
			
			
			
		 /*	$(target).find('.cant ').bind("mouseenter",
			function(e){
			     $('#notyfication_box').html(oDictonary[2]);
			});
			$(target).find('.invday').bind("mouseleave",
			function(e){
			     $('#notyfication_box').html("");
			}); */
			
			
	};
})(jQuery);


function setCalOneDaysCyclic(iDays, aOnly, bUpdate){
	
	var oSelect = document.getElementById('calOneDays');
	var iCurrentSelect = parseInt(jQuery('#calOneDays').val());	
	
		oSelect.options.length = 0;
		
		var k =0;
		
		if(aOnly == false){
			 for(var i = iDays; i <= 31; i++){
				oSelect.options[k++] = new Option(i-1, i);
				if(iCurrentSelect == oSelect.options[k-1].value){
					oSelect.options[(k-1)].setAttribute('selected', 'selected');
				}
			 }
			
		 } else {
			 var bFountSelect = false;
			 for(var i = 0; i < aOnly.length; i++){
			     oSelect.options[k++] = new Option(aOnly[i], aOnly[i] + 1);
			     if(iCurrentSelect == oSelect.options[k-1].value){
			    	 oSelect.options[(k-1)].setAttribute('selected', 'selected');
			    	 bFountSelect = true;
			     }
			     if(!bFountSelect){
			    	 oSelect.options[0].setAttribute('selected', 'selected')
			     }
			 } 
				 
		 }
		
		if(bUpdate){
			
			if(aOnly !== false){
				if(jQuery('#no_of_calendar_tips_cont_10').length == 0 ){
					jQuery('#no_of_calendar_tips').qtip({ position: 'center', nudge_left: 0, container: 'no_of_calendar_tips_cont_1', content: aLanguageReservation[25]});
				} 
				if(jQuery('#no_of_calendar_tips_cont_10:hidden').length){
					jQuery('#no_of_calendar_tips').trigger('mouseover');
				}
			} else {
				//if(jQuery('#no_of_calendar_tips_cont_10:visible').length){
					jQuery('#no_of_calendar_tips').trigger('mouseout');
					if(jQuery('#no_of_calendar_tips_cont_10').length > 0 ){
						jQuery('#no_of_calendar_tips_cont_10').remove();
					}
					
				//}
			}
			
		
			jQuery('#calOneDays').bind('mouseenter', function(){
				jQuery('#calOneDays').trigger('change');
				jQuery('#calOneDays').unbind('mouseenter');
			});
			
		}
		
		
		//jQuery('#calOneDays').trigger('change');
		
		//jQuery('#calOne').find('.cantSelect').removeClass('cantSelect');
		//jQuery('#calOne').find('.current_day:eq(0)').trigger('mouseleave');
		
		//odznazamy te ktore sie nie pokrywają
		
 
}

function setHoverType($,currDay, bCanSelect, di, iCantSelectEnd){
        
        if(bCanSelect){
            if($(currDay).hasClass('invdayHalf')){
             $(currDay).addClass('invdayHalf-hover');
            }else if($(currDay).hasClass('pending-right')){
             $(currDay).addClass('pending-hover-right');
            }else if($(currDay).hasClass('invdayHalf-left')){
             $(currDay).addClass('invdayHalf-hover-left');
            }else if($(currDay).hasClass('pending-left')){
             $(currDay).addClass('pending-hover-left');
            }else{
             $(currDay).addClass('overDay');
            } 
        }else {
          if(di <= iCantSelectEnd){
            if($(currDay).hasClass('invdayHalf')){
             $(currDay).addClass('cant-select-right-blue');
            }else if($(currDay).hasClass('pending-right')){
             $(currDay).addClass('cant-select-right-pending');
            }else if($(currDay).hasClass('invdayHalf-left')){
             $(currDay).addClass('cant-select-left-blue');
            }else if($(currDay).hasClass('pending-left')){
             $(currDay).addClass('cant-select-left-pending');
            }else{
             $(currDay).addClass('cantSelect');
             }
           } else {
             if($(currDay).hasClass('invdayHalf')){
             $(currDay).addClass('cant-select-right-blue');
             }else if($(currDay).hasClass('pending-right')){
             $(currDay).addClass('cant-select-right-pending');
             }else if($(currDay).hasClass('invdayHalf-left')){
             $(currDay).addClass('cant-select-left-blue');
             }else if($(currDay).hasClass('pending-left')){
             $(currDay).addClass('cant-select-left-pending');
             }else{
             $(currDay).addClass('cantSelect');
             }
           }
        
        }      
  
}
