﻿var _calendar_showing = false;

function linkCalendars(cdepart, creturn) {
	
	var calendar_depart = $find(cdepart);
	$(calendar_depart).data('return', $find(creturn));
	
	calendar_depart.remove_dateSelected(linkedcalendar_DateSelected);
	calendar_depart.add_dateSelected(linkedcalendar_DateSelected);
	
	linkedcalendar_DateSelected(calendar_depart, null);
}

function linkedcalendar_DateSelected(sender, args) {

	var calendar_depart = sender;
	var calendar_return = $(calendar_depart).data('return');
	
	if ((calendar_depart == null) || (calendar_return == null))
		return;
		
	var dateD = calendar_depart.get_selectedDate();
	var dateR = calendar_return.get_selectedDate();
		
	if (dateD == null) {
		calendar_return.set_minDate(calendar_depart.get_minDate());
		calendar_return.set_maxDate(calendar_depart.get_maxDate());
	} else {
		var max = new Date(dateD); max.setFullYear(max.getFullYear() + 1);		
		calendar_return.set_minDate(dateD);
		calendar_return.set_maxDate(max);
	}
	
	if (dateD && dateR) {	
		if (dateR < dateD)
			calendar_return.clear();
	}
}

function showCalendar(sender, args) {

	if (!_calendar_showing) {
	
		_calendar_showing = true;
		args.set_cancel(true);
		
		var popupElement = sender.get_popupContainer();		 
		var button = sender.get_popupButton();
		var dimensions = sender.getElementDimensions(button);
		var position = sender.getElementPosition(button);
			
		sender.showPopup(position.x + dimensions.width, position.y);
	}

	_calendar_showing = false;
}

function calendarBugFix()
{
    if (typeof(Telerik) != "undefined" && typeof(Telerik.Web.UI.Calendar) != "undefined")
    {
        Telerik.Web.UI.Calendar.Popup.prototype.Hide = function(updateData)
        {
            var div = this.DomElement;
            var styleObj = RadHelperUtils.GetStyleObj(div);
             
            if (div)
                $telerik.$(div).stop(true, true);
             
            var thisObj = this;
            removeDiv = function()
            {
                if (div)
                {
                    if (navigator.userAgent.match(/Safari/))
                    {
                        styleObj.visibility = "hidden";
                        styleObj.position = "absolute";
                        styleObj.left = "-1000px";
                    }
                    else
                    {
                        styleObj.display = "none";
                    }
                     
                    styleObj = null;
                     
                    if (div.childNodes.length != 0)
                    {
                        if (navigator.userAgent.match(/Safari/))
                        {
                            div.childNodes[0].style.visibility = "hidden";
                            div.childNodes[0].style.position = "absolute";
                            div.childNodes[0].style.left = "-1000px";
                        }
                        else
                        {
                            div.childNodes[0].style.display = "none";
                        }
                    }
                     
                    var innerElement = div.childNodes[0];
                    if (innerElement != null)
                    {
                        div.removeChild(innerElement);      
                         
                        if (thisObj.Parent != null)
                        {
                            thisObj.Parent.appendChild(innerElement);
                        }
                        else if (thisObj.Sibling != null)
                        {
                            var parentElement = thisObj.Sibling.parentNode;
                            if (parentElement != null)
                                parentElement.insertBefore(innerElement, thisObj.Sibling);
                        }
                                         
                        if (navigator.userAgent.match(/Safari/))
                        {
                            RadHelperUtils.GetStyleObj(innerElement).visibility = "hidden";
                            RadHelperUtils.GetStyleObj(innerElement).position = "absolute";
                            RadHelperUtils.GetStyleObj(innerElement).left = "-1000px";          
                        }
                        else
                        {
                            RadHelperUtils.GetStyleObj(innerElement).display = "none";
                        }
                    }
                    //IFRAME code
                    RadHelperUtils.ProcessIframe(div, false);
                }
            }
             
            if (div && typeof(this.HideAnimationDuration) == "number" && this.HideAnimationDuration > 0)
                $telerik.$(div).fadeOut(this.HideAnimationDuration, removeDiv);
            else
                removeDiv();
                 
            if (this.OnClickFunc != null)
            {
                RadHelperUtils.DetachEventListener(document, "click", this.OnClickFunc);
                this.OnClickFunc = null;
            }
            if (this.OnKeyPressFunc != null)
            {
                RadHelperUtils.DetachEventListener(document, "keydown", this.OnKeyPressFunc);
                this.OnKeyPressFunc = null;
            }
             
            if (updateData && this.ExitFunc)
            {   
                this.ExitFunc();
            }
        }
    }
}

if (typeof(Sys) !== 'undefined') {
	Sys.Application.notifyScriptLoaded();
	Sys.Application.add_init(function() {
		calendarBugFix();
	});
}