if(!window.DSuite)var DSuite=new Object();var DSuite=new Object();var stdObjCreated=false;DSuite.events=new Array();DSuite.createStdObj=function(){DSuite.clientInfoObj=new DSuite.clientInfo();DSuite.clientInfoObj.init();if(!DSuite.configObj){DSuite.configObj=new DSuite.config();DSuite.configObj.init();}DSuite.commonObj=new DSuite.common();DSuite.varStor=new DSuite.gVarStor();DSuite.commonObj.init();DSuite.domQueryObj=new DSuite.domQuery();
window.onunload=function(){DSuite.commonObj.__clearMemoryGarbage();}
stdObjCreated=true;}
DSuite.config=function(){var imagePath;var cssPath;var defaultCssPath;var defaultImagePath;}
DSuite.config.prototype={init:function(){this.imagePath='../images/';this.cssPath='';this.defaultCssPath=this.cssPath;this.defaultImagePath=this.imagePath;},setCssPath:function(newCssPath){this.cssPath=newCssPath;},resetCssPath:function(){this.cssPath=this.defaultCssPath;},resetImagePath:function(){this.imagePath=this.defaultImagePath;},setImagePath:function(newImagePath){this.imagePath=newImagePath;}}
DSuite.gVarStor=function(){var menuBar_highlightedItems;this.menuBar_highlightedItems=new Array();var arrayObj;this.arrayObj=new Array();var ajaxObjects;this.ajaxObjects=new Array();}
DSuite.gVarStor.prototype={}
DSuite.common=function(){var loadedCSSFiles;var cssCacheStatus;var events;var isOkToSelect;this.okToSelect=true;this.cssCacheStatus=true;this.events=new Array();}
DSuite.common.prototype={init:function(){this.loadedCSSFiles=new Array();},loadCSS:function(cssFileName){if(!this.loadedCSSFiles[cssFileName]){this.loadedCSSFiles[cssFileName]=true;var linkTag=document.createElement('LINK');if(!this.cssCacheStatus){if(cssFileName.indexOf('?')>=0)cssFileName=cssFileName+'&';else cssFileName=cssFileName+'?';cssFileName=cssFileName+'rand='+Math.random();}linkTag.href=DSuite.configObj.cssPath+cssFileName;linkTag.rel='stylesheet';linkTag.media='screen';linkTag.type='text/css';document.getElementsByTagName('HEAD')[0].appendChild(linkTag);}},
	
getTopPos:function(inputObj)
{	
	var returnValue=inputObj.offsetTop;
	while((inputObj=inputObj.offsetParent)!=null)
	{		
		if(inputObj.tagName!='HTML')
		{
			
			returnValue+=(inputObj.offsetTop-inputObj.scrollTop);
			if(document.all)returnValue+=inputObj.clientTop;
			
		}
	}
	return returnValue;
},
__setOkToMakeTextSelections:function(okToSelect){this.okToSelect=okToSelect;},__getOkToMakeTextSelections:function(){return this.okToSelect;},setCssCacheStatus:function(cssCacheStatus){this.cssCacheStatus=cssCacheStatus;},getLeftPos:function(inputObj){var returnValue=inputObj.offsetLeft;while((inputObj=inputObj.offsetParent)!=null){if(inputObj.tagName!='HTML'){returnValue+=inputObj.offsetLeft;if(document.all)returnValue+=inputObj.clientLeft;}}return returnValue;},cancelEvent:function(){return false;},addEvent:function(whichObject,eventType,functionName,suffix){if(!suffix)suffix='';if(whichObject.attachEvent){whichObject['e'+eventType+functionName+suffix]=functionName;
whichObject[eventType+functionName+suffix]=function(){whichObject['e'+eventType+functionName+suffix]( window.event );} 
whichObject.attachEvent('on'+eventType,whichObject[eventType+functionName+suffix]);}else whichObject.addEventListener(eventType,functionName,false);this.__addEventElement(whichObject);},removeEvent:function(whichObject,eventType,functionName){if(whichObject.detachEvent){whichObject.detachEvent('on'+eventType,whichObject[eventType+functionName]);whichObject[eventType+functionName]=null;}else whichObject.removeEventListener(eventType,functionName,false);},__clearMemoryGarbage : function(){if(!DSuite.clientInfoObj.isMSIE)return;for(var no in DSuite.varStor.arrayObj){DSuite.varStor.arrayObj[no]=false;}for(var no=0;no<DSuite.events.length;no++){DSuite.events[no].onclick=null;DSuite.events[no].onmousedown=null;DSuite.events[no].onmousemove=null;DSuite.events[no].onmouseout=null;DSuite.events[no].onmouseover=null;DSuite.events[no].onmouseup=null;DSuite.events[no].onfocus=null;DSuite.events[no].onblur=null;DSuite.events[no].onkeydown=null;DSuite.events[no].onkeypress=null;DSuite.events[no].onkeyup=null;DSuite.events[no].onselectstart=null;DSuite.events[no].ondragstart=null;DSuite.events[no].oncontextmenu=null;DSuite.events[no].onscroll=null;}window.onunload=null;DSuite=null;},__addEventElement:function(el){DSuite.events[DSuite.events.length]=el;},getSrcElement:function(e){var el;if(e.target)el=e.target;else if(e.srcElement)el=e.srcElement;if(el.nodeType == 3)el=el.parentNode;return el;},isObjectClicked:function(obj,e){var src=this.getSrcElement(e);var string=src.tagName+'('+src.className+')';if(src==obj)return true;while(src.parentNode&&src.tagName.toLowerCase()!='html'){src=src.parentNode;string=string+','+src.tagName+'('+src.className+')';if(src==obj)return true;}return false;},getObjectByClassName:function(e,className){var src=this.getSrcElement(e);if(src.className==className)return src;while(src&&src.tagName.toLowerCase()!='html'){src=src.parentNode;if(src.className==className)return src;}return false;},getObjectByAttribute:function(e,attribute){var src=this.getSrcElement(e);var att=src.getAttribute(attribute);if(!att)att=src[attribute];if(att)return src;while(src&&src.tagName.toLowerCase()!='html'){src=src.parentNode;var att=src.getAttribute('attribute');if(!att)att=src[attribute];if(att)return src;}return false;},getUniqueId:function(){var no=Math.random()+'';no=no.replace('.','');var no2=Math.random()+'';no2=no2.replace('.','');return no+no2;}}
DSuite.clientInfo=function(){var browser;var isOpera;var isMSIE;var isOldMSIE;var isFirefox;var navigatorVersion;}
DSuite.clientInfo.prototype={init:function(){this.browser=navigator.userAgent;this.isOpera=(this.browser.toLowerCase().indexOf('opera')>=0)?true:false;this.isFirefox=(this.browser.toLowerCase().indexOf('firefox')>=0)?true:false;this.isMSIE=(this.browser.toLowerCase().indexOf('msie')>=0)?true:false;this.isOldMSIE=(this.browser.toLowerCase().match(/msie [0-6]/gi))?true:false;this.isSafari=(this.browser.toLowerCase().indexOf('safari')>=0)?true:false;this.navigatorVersion=navigator.appVersion.replace(/.*?MSIE (\d\.\d).*/g,'$1')/1;},getBrowserWidth:function(){return document.documentElement.offsetWidth;},getBrowserHeight:function(){return document.documentElement.offsetHeight;}}
DSuite.domQuery=function(){document.getElementsByClassName=this.getElementsByClassName;document.getElementsByAttribute=this.getElementsByAttribute;}
DSuite.domQuery.prototype={getElementsByClassName:function(className,inputObj){var returnArray=new Array();if(inputObj)var allElements=inputObj.getElementsByTagName('*');else var allElements=document.getElementsByTagName('*');for(var no=0;no<allElements.length;no++){if(allElements[no].className==className)returnArray[returnArray.length]=allElements[no];}return returnArray;},getElementsByAttribute:function(attribute,attributeValue,inputObj){var returnArray=new Array();if(inputObj)var allElements=inputObj.getElementsByTagName('*');else var allElements=document.getElementsByTagName('*');for(var no=0;no<allElements.length;no++){var att=allElements[no].getAttribute(attribute);if(!attributeValue){if(att)returnArray[returnArray.length]=allElements[no];}else if(att==attributeValue)returnArray[returnArray.length]=allElements[no];}return returnArray;}}
if(!window.DSuite)var DSuite=new Object();var curZIndex=100000;var curObjIndex;DSuite.dragDropSimple=function(elementRef,elementId,initX,initY){var div;var dragTimer;var mouse_x;var mouse_y;var positionSet;var dragHandle;this.positionSet=false;this.dragHandle=new Array();var initX;var initY;if(!initX)initX=0;if(!initY)initY=0;this.initX=initX;this.initY=initY;this.dragStatus=-1;if(!stdObjCreated)DSuite.createStdObj();if(!elementRef&&elementId)elementRef=document.getElementById(elementId);this.div=elementRef;var objectIndex;this.objectIndex=DSuite.varStor.arrayObj.length;DSuite.varStor.arrayObj[this.objectIndex]=this;this.__init();};DSuite.dragDropSimple.prototype={__init:function(){var ind=this.objectIndex;var copy=this.div.cloneNode(true);this.div.objectIndex=ind;this.div.setAttribute('objectIndex',ind);this.div.style.padding='0px';this.div.style.left=(DSuite.commonObj.getLeftPos(this.div)+this.initX)+'px';this.div.style.top=(DSuite.commonObj.getTopPos(this.div)+this.initY)+'px';this.div.style.position='absolute';this.div.style.margin='0px';curZIndex++;this.div.style.zIndex=curZIndex;this.div.parentNode.insertBefore(copy,this.div);copy.style.visibility='hidden';this.div.id='xxxxxx';this.div.onmousedown=this.__initDragProcess;DSuite.commonObj.addEvent(document.documentElement,'mousemove',function(e){DSuite.varStor.arrayObj[ind].__moveDragableElement(e);});DSuite.commonObj.addEvent(document.documentElement,'mouseup',function(e){DSuite.varStor.arrayObj[ind].__stopDragProcess(e);});document.body.appendChild(this.div);},addDragHandle:function(dragHandle){this.dragHandle[this.dragHandle.length]=dragHandle;},__initDragProcess:function(e){if(document.all)e=event;var ind=this.getAttribute('objectIndex');if(!ind)ind=this.objectIndex;curObjIndex=ind;var thisObject=DSuite.varStor.arrayObj[ind];if(thisObject.dragHandle.length>0){var objectFound;for(var no=0;no<thisObject.dragHandle.length;no++){if(!objectFound)objectFound=DSuite.commonObj.isObjectClicked(thisObject.dragHandle[no],e);}if(!objectFound)return;}if(!DSuite.commonObj.isObjectClicked(thisObject.div,e))return;curZIndex++;thisObject.div.style.zIndex=curZIndex;thisObject.mouse_x=e.clientX;thisObject.mouse_y=e.clientY;thisObject.el_x=thisObject.div.style.left.replace('px','')/1;thisObject.el_y=thisObject.div.style.top.replace('px','')/1;thisObject.dragTimer=0;thisObject.__waitBeforeDragProcessStarts();return false;},__waitBeforeDragProcessStarts:function(){var ind=this.objectIndex;if(this.dragTimer>=0&&this.dragTimer<5){this.dragTimer++;setTimeout('DSuite.varStor.arrayObj['+ind+'].__waitBeforeDragProcessStarts()',5);}},__moveDragableElement:function(e){if(!curObjIndex)return false;var thisObj=DSuite.varStor.arrayObj[curObjIndex];if(thisObj.dragTimer==5){thisObj.div.style.left=(e.clientX-thisObj.mouse_x+thisObj.el_x)+'px';thisObj.div.style.top=(e.clientY-thisObj.mouse_y+thisObj.el_y)+'px';}return false;},__stopDragProcess:function(){if(!curObjIndex)return;var thisObj=DSuite.varStor.arrayObj[curObjIndex];thisObj.dragTimer=-1;}}
if(!window.DSuite)var DSuite=new Object();
DSuite.calendarModel=function(inputArray){var initialDay;var initialMonth;var initialYear;var displayedDay;var displayedMonth;var displayedYear;var invalidDateRange;var weekStartsOnMonday;this.weekStartsOnMonday=true;this.invalidDateRange=new Array();this.__createDefaultModel(inputArray);}
DSuite.calendarModel.prototype={
setCallbackChange:function(functionName){this.callbackMonthChange=functionName;},addInvalidDateRange:function(from,to){var index=this.invalidDateRange.length;this.invalidDateRange[index]=new Array();if(from){from.day=from.day+'';from.month=from.month+'';from.year=from.year+'';if(!from.month)from.month=from.month='1';if(!from.day)from.day=from.day='1';if(from.day.length==1)from.day='0'+from.day;if(from.month.length==1)from.month='0'+from.month;this.invalidDateRange[index].fromDate=from.year+from.month+from.day;}else{this.invalidDateRange[index].fromDate=false;}if(to){to.day=to.day+'';to.month=to.month+'';to.year=to.year+'';if(!to.month)to.month=to.month='1';if(!to.day)to.day=to.day='1';if(to.day.length==1)to.day='0'+to.day;if(to.month.length==1)to.month='0'+to.month;this.invalidDateRange[index].toDate=to.year+to.month+to.day;}else{this.invalidDateRange[index].toDate=false;}},
isDateWithinValidRange:function(inputDate){if(this.invalidDateRange.length==0)return true;var month=inputDate.month+'';if(month.length==1)month='0'+month;var day=inputDate.day+'';if(day.length==1)day='0'+day;var dateToCheck=inputDate.year+month+day;for(var no=0;no<this.invalidDateRange.length;no++){if(!this.invalidDateRange[no].fromDate&&this.invalidDateRange[no].toDate>=dateToCheck)return false;if(!this.invalidDateRange[no].toDate&&this.invalidDateRange[no].fromDate<=dateToCheck)return false;if(this.invalidDateRange[no].fromDate<=dateToCheck&&this.invalidDateRange[no].toDate>=dateToCheck)return false;}return true;},
setInitialDate:function(input,format){if(input.value.length>0){if(!format.match(/^[0-9]*?$/gi)){var items=input.value.split(/[^0-9]/gi);var pos=new Array();pos['m']=format.indexOf('mm');if(pos['m']==-1)pos['m']=format.indexOf('m');pos['d']=format.indexOf('dd');if(pos['d']==-1)pos['d']=format.indexOf('d');pos['y']=format.indexOf('yyyy');var posNum=Array();posNum[0]=pos['m'];posNum[1]=pos['d'];posNum[2]=pos['y'];posNum=posNum.sort(this.__calendarSortItems);var itemIndex=-1;for(var no=0;no<posNum.length;no++){if(posNum[no]==-1)continue;itemIndex++;if(posNum[no]==pos['m']){this.initialMonth=items[itemIndex];continue;}if(posNum[no]==pos['y']){this.initialYear=items[itemIndex];continue;}if(posNum[no]==pos['d']){tmpDay=items[itemIndex];continue;}}this.initialMonth=this.initialMonth/1;tmpDay=tmpDay/1;this.initialDay=tmpDay;}else{var monthPos=format.indexOf('mm');this.initialMonth=input.value.substr(monthPos,2)/1;var yearPos=format.indexOf('yyyy');this.initialYear=input.value.substr(yearPos,4);var dayPos=format.indexOf('dd');tmpDay=input.value.substr(dayPos,2);this.initialDay=tmpDay;}}else{var dateOfToday=new Date();this.initialDay=dateOfToday.getDate();this.initialYear=dateOfToday.getFullYear();this.intialMonth=dateOfToday.getMonth()+1;}this.__setInitialDate();},
__setInitialDate:function(){this.displayedYear=this.initialYear;this.displayedMonth=this.initialMonth;this.displayedDay=this.initialDay;},
__calendarSortItems:function(a,b){return a/1-b/1;},
setWeekStartsOnMonday:function(weekStartsOnMonday){this.weekStartsOnMonday=weekStartsOnMonday;},
__isLeapYear:function(inputYear){if(inputYear%400==0||(inputYear%4==0&&inputYear%100!=0))return true;return false;},
getWeekStartsOnMonday:function(){return this.weekStartsOnMonday;},
__createDefaultModel:function(){var d=new Date();this.initialYear=d.getFullYear();this.initialMonth=d.getMonth()+1;this.initialDay=d.getDate();this.displayedYear=this.initialYear;this.displayedMonth=this.initialMonth;this.displayedDay=this.initialDay;},
__getDisplayedDayWithLeadingZeros:function(){var retVal=this.displayedDay+'';if(retVal.length==1)retVal='0'+retVal;return retVal;},
__getDisplayedMonthNumberWithLeadingZeros:function(){var retVal=this.displayedMonth+'';if(retVal.length==1)retVal='0'+retVal;return retVal;},
__moveOneYearBack:function(){this.displayedYear--;},
__moveOneYearForward:function(){this.displayedYear++;},
__moveOneMonthBack:function(){this.displayedMonth--;if(this.displayedMonth<1){this.displayedMonth=12;this.displayedYear--;}},
__moveOneMonthForward:function(){this.displayedMonth++;if(this.displayedMonth>12){this.displayedMonth=1;this.displayedYear++;}},
__setDisplayedYear:function(year){var success=year!=this.displayedYear;this.displayedYear=year;return success;},
__setDisplayedMonth:function(month){var success=month!=this.displayedMonth;this.displayedMonth=month;return success;},
__setDisplayedDay:function(day){this.displayedDay=day;},
__getPreviousYearAndMonthAsArray:function(){var month=this.displayedMonth-1;var year=this.displayedYear;if(month==0){month=12;year=year-1;}var retArray=[year,month];return retArray;},
__getNumberOfDays:function(){return this.__getNumberOfDaysInMonth(this.displayedYear,this.displayedMonth);},
__getNumberOfDaysInMonth:function(year,month){var daysInMonthArray=[31,28,31,30,31,30,31,31,30,31,30,31];var daysInMonth=daysInMonthArray[month-1];if(daysInMonth==28){if(this.__isLeapYear(year))daysInMonth=29;}return daysInMonth/1;},
__getRemainingDaysInPreviousMonthAsArray:function(){var d=new Date();d.setFullYear(this.displayedYear);d.setDate(1);d.setMonth(this.displayedMonth-1);var dayStartOfMonth=d.getDay();if(this.weekStartsOnMonday){if(dayStartOfMonth==0)dayStartOfMonth=7;dayStartOfMonth--;}var previousMonthArray=this.__getPreviousYearAndMonthAsArray();var daysInPreviousMonth=this.__getNumberOfDaysInMonth(previousMonthArray[0],previousMonthArray[1]);var returnArray=new Array();for(var no=0;no<dayStartOfMonth;no++){returnArray[returnArray.length]=daysInPreviousMonth-dayStartOfMonth+no+1;}return returnArray;}
}
DSuite.calendar=function(prop){var id;var div;var divContent;var divHeading;var divNavBar;var divMonth;var divMonthName;var divYear;var divBtnPrevYear;var divBtnNextYear;var divBtnPrevMonth;var divBtnNextMonth;var divYearDrop;var divYearDropParent;var iframe;var iframeDrop;var model;var objectIndex;var target;var layoutCSS;var isDragable;var referenceDrag;var scrollYear;var yearDropOffset;var displayCloseButton;var displayNavigationBar;var displayLegend;var posReference;var posX;var posY;var htmlReferences;var numberYearDrop;var minDate;var maxDate;var blockPastDays;var displayMonths;var monthArray;var dayArray;var legend;var title;var format;this.displayLegend=true;this.blockPastDays=false;this.displayMonths=1;this.htmlReferences=new Array();this.posReference=false;this.displayCloseButton=true;this.displayNavigationBar=true;this.yearDropOffset=0;this.isDragable=false;this.scrollYear=false;this.numberYearDrop=10;this.monthArray=['January','February','March','April','May','June','July','August','September','October','November','December'];this.dayArray=['Mon','Tue','Wed','Thu','Fri','Sat','Sun'];this.title='Calendar';this.format='yyyy-mm-dd';this.legend='';this.divMonthName=Array();this.divYear=Array();var callbackDayClick;var callbackDayDoubleClick;var callbackClose;var callbackMonthChange;try{if(!stdObjCreated)DSuite.createStdObj();}catch(e){alert('You need to include the DSuite-common.js file');}this.objectIndex=DSuite.varStor.arrayObj.length;DSuite.varStor.arrayObj[this.objectIndex]=this;if(prop)this.__setInitialData(prop);}
DSuite.calendar.prototype={
setCallbackDayClick:function(functionName){this.callbackDayClick=functionName;},
setCallbackDayDoubleClick:function(functionName){this.callbackDayDoubleClick=functionName;},
setCallbackChange:function(functionName){if(!this.model){this.model=new DSuite.calendarModel();}this.callbackMonthChange=functionName;},
setCallbackClose:function(functionName){this.callbackClose=functionName;},
setPosition:function(ref,offsetX,offsetY){if(typeof ref=='string'){ref=document.getElementById(ref);}this.posReference=ref;if(!offsetX)offsetX=0;if(!offsetY)offsetY=0;this.posX=offsetX;this.posY=offsetY;},
addReference:function(key,ref){if(typeof ref=='string'){ref=document.getElementById(ref);}if(key){this.htmlReferences[key]=ref;}},
getReferences:function(){return this.htmlReferences;},
setTargetReference:function(target){if(typeof target=='string'){target=document.getElementById(target);}this.target=target;},
resetViewDisplayedMonth:function(){if(!this.div)return;if(!this.model){this.model=new DSuite.calendarModel();}this.model.__setInitialDate();this.__populateHeading();this.__populateMonth();},
setLayoutCss:function(nameOfCssFile){this.layoutCSS=nameOfCssFile;},

__init:function()
{
	if(!this.div){DSuite.commonObj.loadCSS(this.layoutCSS);
	if(!this.model)
	{
		this.model=new DSuite.calendarModel();
	}
	var dateOfToday=new Date();
	if(this.blockPastDays)
	{
		dateOfToday=new Date(dateOfToday.getFullYear(),dateOfToday.getMonth(),dateOfToday.getDate()-1);
		this.model.addInvalidDateRange(false,{year:dateOfToday.getFullYear(),month:dateOfToday.getMonth()+1,day:dateOfToday.getDate()});
	}
	if(this.maxDate)
	{
		dateOfToday=new Date(this.maxDate.year,this.maxDate.month,1);
		this.model.addInvalidDateRange({year:dateOfToday.getFullYear(),month:dateOfToday.getMonth()+1,day:dateOfToday.getDate()},false);}
		this.__createPrimaryHtmlElements();
		this.__createHeading();
		this.__createNavigationBar();
		this.__populateHeading();
		this.__createCalendarMonth();
		this.__populateMonth();
		this.__createLegendBar();
		this.__createDropDownYears();
		this.__populateDropDownYears();
		this.__positionDropDownYears();
		this.__createDropDownMonth();
		this.__populateDropDownMonths();
		this.__positionDropDownMonths();
		this.__addEvents();
	}
	else
	{
		this.div.style.display='block';
		this.__populateHeading();
		this.__populateMonth();
	}
	this.__resizePrimaryIframeElement();

},
display:function(){if(!this.div)this.__init();this.__positionCalendar();this.div.style.display='block';window.setTimeout('calendar.__addDisplayEvents()',250);},
hide:function(){this.div.style.display='none';this.divYearDrop.style.display='none';this.divMonthDrop.style.display='none';this.__removeDisplayEvents()},
isVisible:function(){if(!this.div)return false;return this.div.style.display=='block'?true:false;},
setInitialDate:function(input){if(!this.model){this.model=new DSuite.calendarModel();}this.model.setInitialDate(input,this.format);},
setDisplayedYear:function(year){var success=this.model.__setDisplayedYear(year);this.__populateHeading();this.__populateMonth();if(success)this.__handleCallBack('monthChange');},
setDisplayedMonth:function(month){var success=this.model.__setDisplayedMonth(month);this.__populateHeading();this.__populateMonth();this.__handleCallBack('monthChange');},
__createDropDownMonth:function(){this.divMonthDrop=document.createElement('DIV');this.divMonthDrop.style.display='none';this.divMonthDrop.className='calendar_monthDropDown';document.body.appendChild(this.divMonthDrop);},
__populateDropDownMonths:function(index){if(!index)index=0;index=index/1;this.divMonthDrop.innerHTML='';var ind=this.objectIndex;var months=this.monthArray;var year=this.model.displayedYear;if((this.model.displayedMonth+index)>months.length)year=year+1;for(var no=0;no<months.length;no++){var div=document.createElement('DIV');div.className='calendar_dropDownAMonth';if((no+1-index)==this.model.displayedMonth||((no+1-index)==0&&this.model.displayedYear==year-1))div.className='calendar_yearDropDownCurrentMonth';div.innerHTML=months[no];div.id='month_'+year+'_'+(no+1)+'_'+index;if((this.minDate&&this.minDate.year==this.model.displayedYear&&this.minDate.month>no+1-index&&year==this.model.displayedYear)||(this.maxDate&&this.maxDate.year==this.model.displayedYear&&this.maxDate.month<=no-index)||year>this.maxDate.year)div.className='calendar_yearDropDownInvalidMonth';else{div.onmouseover=this.__mouseoverMonthInDropDown;div.onmouseout=this.__mouseoutMonthInDropDown;div.onclick=function(e){DSuite.varStor.arrayObj[ind].__setMonthFromDropdown(e);}}this.divMonthDrop.appendChild(div);DSuite.commonObj.__addEventElement(div);}},
__createDropDownYears:function(){this.divYearDrop=document.createElement('DIV');this.divYearDrop.style.display='none';this.divYearDrop.className='calendar_yearDropDown';document.body.appendChild(this.divYearDrop);},
__populateDropDownYears:function(index){var ind=this.objectIndex;this.divYearDrop.innerHTML='';this.divYearDropParent=document.createElement('DIV');this.divYearDrop.appendChild(this.divYearDropParent);this.__populateYearsDrop(index);},
__populateYearsDrop:function(index){if(!index)index=0;index=index/1;var ind=this.objectIndex;this.divYearDropParent.innerHTML='';var startYear=this.model.displayedYear-5+this.yearDropOffset;var year=this.model.displayedYear;if(this.model.displayedMonth+index>this.monthArray.length)year=year+1;for(var no=startYear;no<startYear+this.numberYearDrop;no++){if((this.minDate&&this.minDate.year>no)||(this.maxDate&&this.maxDate.year<no))continue;var div=document.createElement('DIV');div.className='calendar_dropDownAYear';if(no==year)div.className='calendar_yearDropDownCurrentYear';div.innerHTML=no;div.id='year_'+no+'_'+index;div.onmouseover=this.__mouseoverYearInDropDown;div.onmouseout=this.__mouseoutYearInDropDown;
	div.onclick=function(e){DSuite.varStor.arrayObj[ind].__setYearFromDropdown(e);}
this.divYearDropParent.appendChild(div);DSuite.commonObj.__addEventElement(div);}},
__positionDropDownMonths:function(index){if(!index)index=0;this.divMonthDrop.style.left=DSuite.commonObj.getLeftPos(this.divMonthName[index])+'px';this.divMonthDrop.style.top=(DSuite.commonObj.getTopPos(this.divMonthName[index])+this.divMonthName[index].offsetHeight)+'px';if(this.iframeDrop){this.iframeDrop.style.left=this.divMonthDrop.style.left;this.iframeDrop.style.top=this.divMonthDrop.style.top;this.iframeDrop.style.width=(this.divMonthDrop.clientWidth)+'px';this.iframeDrop.style.height=this.divMonthDrop.clientHeight+'px';this.iframeDrop.style.display=this.divMonthDrop.style.display;}},
__positionDropDownYears:function(index){if(!index)index=0;this.divYearDrop.style.left=DSuite.commonObj.getLeftPos(this.divYear[index])+'px';this.divYearDrop.style.top=(DSuite.commonObj.getTopPos(this.divYear[index])+this.divYear[index].offsetHeight)+'px';if(this.iframeDrop){this.iframeDrop.style.left=this.divYearDrop.style.left;this.iframeDrop.style.top=this.divYearDrop.style.top;this.iframeDrop.style.width=(this.divYearDrop.clientWidth)+'px';this.iframeDrop.style.height=this.divYearDrop.clientHeight+'px';this.iframeDrop.style.display=this.divYearDrop.style.display;}},
__setMonthFromDropdown:function(e){if(document.all)e=event;var src=DSuite.commonObj.getSrcElement(e);this.__showHideDropDownBoxMonth();this.model.__setDisplayedMonth(src.id.split('_')[2]);this.model.__setDisplayedYear(src.id.split('_')[1]);for(index=0;index<src.id.split('_')[3];index++)this.model.__moveOneMonthBack();this.__populateHeading();this.__populateMonth();this.__handleCallBack('monthChange');},
__setYearFromDropdown:function(e){if(document.all)e=event;var src=DSuite.commonObj.getSrcElement(e);this.__showHideDropDownBoxYear();this.model.__setDisplayedYear(src.id.split('_')[1]);if(this.model.displayedMonth+src.id.split('_')[2]/1>this.monthArray.length)this.model.__moveOneYearBack();if(this.minDate&&((this.minDate.year==this.model.displayedYear&&this.minDate.month>this.model.displayedMonth)||this.minDate.year>this.model.displayedYear)){this.model.__setDisplayedYear(this.minDate.year);this.model.__setDisplayedMonth(this.minDate.month);}if(this.maxDate&&this.maxDate.year==this.model.displayedYear&&this.maxDate.month<this.model.displayedMonth)this.model.__setDisplayedMonth(this.maxDate.month);this.__populateHeading();this.__populateMonth();this.__handleCallBack('monthChange');},
__autoHideDropDownBoxes:function(e){if(document.all)e=event;var src=DSuite.commonObj.getSrcElement(e);if(src.className.indexOf('MonthAndYear')>=0){if(DSuite.commonObj.isObjectClicked(this.div,e))return;}this.__showHideDropDownBoxMonth(undefined,'none');this.__showHideDropDownBoxYear(undefined,'none');},
__showHideDropDownBoxMonth:function(index,forcedDisplayAttribute){if(!index)index=0;if(!forcedDisplayAttribute){this.__showHideDropDownBoxYear(index,'none');}if(forcedDisplayAttribute){this.divMonthDrop.style.display=forcedDisplayAttribute;}else{this.divMonthDrop.style.display=(this.divMonthDrop.style.display=='block'?'none':'block');}this.__populateDropDownMonths(index);this.__positionDropDownMonths(index);},
__showHideDropDownBoxYear:function(index,forcedDisplayAttribute){if(!index)index=0;if(!forcedDisplayAttribute){this.__showHideDropDownBoxMonth(index,'none');}if(forcedDisplayAttribute){this.divYearDrop.style.display=forcedDisplayAttribute;}else{this.divYearDrop.style.display=(this.divYearDrop.style.display=='block'?'none':'block');}if(this.divYearDrop.style.display=='none'){this.yearDropOffset=0;}else{this.__populateDropDownYears(index);}this.__positionDropDownYears(index);},
__createPrimaryHtmlElements:function(){this.div=document.createElement('DIV');this.div.className='calendar';this.divContent=document.createElement('DIV');this.div.appendChild(this.divContent);this.divContent.className='calendarContent';if(this.target)this.target.appendChild(this.div);else document.body.appendChild(this.div);if(this.isDragable){try{this.referenceDrag=new DSuite.dragDropSimple(this.div,false,0,0);}catch(e){alert('You need to include DSuite-dragDropSimple.js for the drag feature');}}if(DSuite.clientInfoObj.isMSIE&&DSuite.clientInfoObj.navigatorVersion<8){this.iframe=document.createElement('<iframe src="about:blank" frameborder="0">');this.iframe.className='calendar_iframe';this.div.appendChild(this.iframe);this.iframeDrop=document.createElement('<iframe src="about:blank" frameborder="0">');this.iframeDrop.className='calendar_iframe';this.iframeDrop.style.display='none';document.body.appendChild(this.iframeDrop);}},
__createHeading:function(){this.divHeading=document.createElement('DIV');if(this.isDragable){this.referenceDrag.addDragHandle(this.divHeading);this.divHeading.style.cursor='move';}this.divHeading.className='calendarHeading';this.divContent.appendChild(this.divHeading);this.divHeading.style.position='relative';this.divElementClose=document.createElement('DIV');this.divElementClose.className='calendarCloseButton';this.divHeading.appendChild(this.divElementClose);if(!this.displayCloseButton)this.divElementClose.style.display='none';this.divElementHeadingTxt=document.createElement('DIV');this.divElementHeadingTxt.className='calendarHeadingTxt';var span=document.createElement('SPAN');span.id='calendar_title';span.innerHTML=this.title;this.divElementHeadingTxt.appendChild(span);this.divHeading.appendChild(this.divElementHeadingTxt);},
__createNavigationBar:function(){this.divNavBar=document.createElement('DIV');this.divNavBar.className='calendar_navigationBar';this.divContent.appendChild(this.divNavBar);this.divBtnPrevMonth=document.createElement('DIV');this.divBtnPrevMonth.className='calendar_btnPreviousMonth';this.divNavBar.appendChild(this.divBtnPrevMonth);this.divBtnNextMonth=document.createElement('DIV');this.divBtnNextMonth.className='calendar_btnNextMonth';this.divNavBar.appendChild(this.divBtnNextMonth);this.divElementHeadingTxt=document.createElement('DIV');this.divElementHeadingTxt.className='calendarHeadingTxt';if(DSuite.clientInfoObj.isMSIE){var tableParent=document.createElement('<TABLE cellpadding="0" cellspacing="0" border="0" width="90%">');}else{var tableParent=document.createElement('TABLE');tableParent.setAttribute('cellpadding',0);tableParent.setAttribute('cellspacing',0);tableParent.setAttribute('width','100%');tableParent.setAttribute('border',0);}tableParent.style.margin='0 auto';this.divElementHeadingTxt.appendChild(tableParent);var rowParent=tableParent.insertRow(0);for(index=0;index<this.displayMonths;index++){var cell=rowParent.insertCell(-1);cell.width=100/this.displayMonths+'%';if(DSuite.clientInfoObj.isMSIE){var table=document.createElement('<TABLE cellpadding="0" cellspacing="0" border="0" align="center">');}else{var table=document.createElement('TABLE');table.setAttribute('cellpadding',0);table.setAttribute('cellspacing',0);table.setAttribute('align','center');table.setAttribute('border',0);}table.style.margin='0 auto';cell.appendChild(table);var row=table.insertRow(0);var cell=row.insertCell(-1);this.divMonthName[index]=document.createElement('DIV');this.divMonthName[index].className='calendarHeaderMonthAndYear';cell.appendChild(this.divMonthName[index]);var cell=row.insertCell(-1);var span=document.createElement('SPAN');span.innerHTML='&nbsp;';cell.appendChild(span);var cell=row.insertCell(-1);this.divYear[index]=document.createElement('DIV');this.divYear[index].className='calendarHeaderMonthAndYear';cell.appendChild(this.divYear[index]);}this.divNavBar.appendChild(this.divElementHeadingTxt);if(!this.displayNavigationBar)this.divNavBar.style.display='none';},
__createCalendarMonth:function(){this.divMonth=document.createElement('DIV');this.divMonth.className='calendar_monthView';this.divContent.appendChild(this.divMonth);},
__populateMonth:function(){var ind=this.objectIndex;this.divMonth.innerHTML='';var modelRef=this.model;modelRef.initialDay=modelRef.displayedDay;modelRef.initialMonth=modelRef.displayedMonth;modelRef.initialYear=modelRef.displayedYear;if(DSuite.clientInfoObj.isMSIE){var tableRoot=document.createElement('<TABLE cellpadding="1" cellspacing="0" border="0" width="100%">');}else{var tableRoot=document.createElement('TABLE');tableRoot.setAttribute('cellpadding',1);tableRoot.setAttribute('cellspacing',0);tableRoot.setAttribute('border',0);tableRoot.width='100%';}this.divMonth.appendChild(tableRoot);var rowRoot=tableRoot.insertRow(-1);for(var index=0;index<this.displayMonths;index++){var cellRoot=rowRoot.insertCell(-1);cellRoot.width=100/this.displayMonths+'%';cellRoot.vAlign='top';if(index>0)cellRoot.className='calendar_separation';if(DSuite.clientInfoObj.isMSIE){var table=document.createElement('<TABLE cellpadding="1" cellspacing="0" border="0" width="100%">');}else{var table=document.createElement('TABLE');table.setAttribute('cellpadding',1);table.setAttribute('cellspacing',0);table.setAttribute('border',0);table.width='100%';}cellRoot.appendChild(table);if(index>0)this.model.__moveOneMonthForward();var row=table.insertRow(-1);row.className='calendar_monthView_headerRow';if(modelRef.getWeekStartsOnMonday()){var days=this.__getDaysMondayToSunday();}else{var days=this.__getDaysSundayToSaturday();}for(var no=0;no<days.length;no++){var cell=row.insertCell(-1);cell.innerHTML=days[no];cell.className='calendar_monthView_headerCell';if(modelRef.getWeekStartsOnMonday()&&no==6){cell.className='calendar_headerSunday';}if(!modelRef.getWeekStartsOnMonday()&&no==0){cell.className='calendar_headerSunday';}}var row=table.insertRow(-1);var daysRemainingInPreviousMonth=modelRef.__getRemainingDaysInPreviousMonthAsArray();for(var no=0;no<daysRemainingInPreviousMonth.length;no++){var cell=row.insertCell(-1);cell.innerHTML='';cell.className='';}var daysInCurrentMonth=modelRef.__getNumberOfDays();var cellCounter=daysRemainingInPreviousMonth.length+1;for(var no=1;no<=daysInCurrentMonth;no++){var cell=row.insertCell(-1);cell.innerHTML=no;cell.className='calendar_day';DSuite.commonObj.__addEventElement(cell);if(cellCounter%7==0&&modelRef.getWeekStartsOnMonday()){cell.className='calendar_sunday';}if(cellCounter%7==1&&!modelRef.getWeekStartsOnMonday()){cell.className='calendar_sunday';}if(no==modelRef.initialDay&&modelRef.displayedYear==modelRef.initialYear&&modelRef.displayedMonth==modelRef.initialMonth){cell.className='calendar_initialDay';}if(!modelRef.isDateWithinValidRange({year:modelRef.displayedYear,month:modelRef.displayedMonth,day:no})){cell.className='calendar_pastDay';}else{
	cell.onclick=function(e){DSuite.varStor.arrayObj[ind].__mouseClickOnDayInCalendar(e);}
cell.onmouseover=this.__mouseoverCalendarDay;cell.onmouseout=this.__mouseoutCalendarDay;
	cell.ondblclick=function(e){DSuite.varStor.arrayObj[ind].__mouseDoubleClickOnDayInCalendar(e);}
cell.id=modelRef.displayedYear+'_'+modelRef.displayedMonth+'_'+no;cell.className='calendar_invalidDay';}if(cellCounter%7==0&&no<daysInCurrentMonth){var row=table.insertRow(-1);}cellCounter++;}}for(var index=1;index<this.displayMonths;index++)this.model.__moveOneMonthBack();},
__createLegendBar:function(){this.divElementLegendBar=document.createElement('DIV');this.divElementLegendBar.className='calendar_legendBar';this.divContent.appendChild(this.divElementLegendBar);this.divElementLegendBar.innerHTML=this.legend;if(!this.displayLegend)this.divElementLegendBar.style.display='none';},
__populateHeading:function(){for(index=0;index<this.displayMonths;index++){this.divMonthName[index].innerHTML=this.monthArray[this.model.displayedMonth-1];this.divYear[index].innerHTML=this.model.displayedYear;this.model.__moveOneMonthForward();}for(index=this.displayMonths-1;index>=0;index--)this.model.__moveOneMonthBack();if(this.minDate){if(this.model.displayedMonth==this.minDate.month&&this.model.displayedYear==this.minDate.year)this.divBtnPrevMonth.style.display='none';else this.divBtnPrevMonth.style.display='';}if(this.maxDate){if(this.model.displayedMonth==this.maxDate.month&&this.model.displayedYear==this.maxDate.year)this.divBtnNextMonth.style.display='none';else this.divBtnNextMonth.style.display='';}},
__mousedownOnDayInCalendar:function(e){if(document.all)e=event;var src=DSuite.commonObj.getSrcElement(e);this.model.__setDisplayedDay(src.innerHTML/1);this.model.__setDisplayedYear(src.id.split('_')[0]/1);this.model.__setDisplayedMonth(src.id.split('_')[1]/1);this.__handleCallBack('dayClick');},
__mouseClickOnDayInCalendar:function(e){if(document.all)e=event;var src=DSuite.commonObj.getSrcElement(e);this.model.__setDisplayedDay(src.innerHTML/1);this.model.__setDisplayedYear(src.id.split('_')[0]/1);this.model.__setDisplayedMonth(src.id.split('_')[1]/1);this.__handleCallBack('dayClick');},
__mouseDoubleClickOnDayInCalendar:function(e){this.__handleCallBack('dayDoubleClick');},__handleCallBack:function(action){var callback='';switch(action){case 'dayClick':if(this.callbackDayClick)callback=this.callbackDayClick;break;case 'dayDoubleClick':if(this.callbackDayDoubleClick)callback=this.callbackDayDoubleClick;break;case "monthChange":if(this.callbackMonthChange)callback=this.callbackMonthChange;break;}if(callback){var formatedDate=this.format;formatedDate=formatedDate.replace(/yyyy/,this.model.displayedYear);formatedDate=formatedDate.replace(/mm/,this.model.__getDisplayedMonthNumberWithLeadingZeros());formatedDate=formatedDate.replace(/dd/,this.model.__getDisplayedDayWithLeadingZeros());callback=callback+'({'+' year:'+this.model.displayedYear+',month:'+this.model.displayedMonth+',day:'+this.model.displayedDay+',initialYear:'+this.model.initialYear+',initialMonth:'+this.model.initialMonth+',initialDay:'+this.model.initialDay+',date:"'+formatedDate+'"'+',calendarRef:this';callback=callback+'})';}if(callback)this.__evaluateCallBackString(callback);},
__evaluateCallBackString:function(callback){try{eval(callback);}catch(e){/*alert('Could not execute call back function '+callback+'\n'+e.message);*/}},
__moveOneYearBack:function(){this.model.__moveOneYearBack();this.__populateHeading();this.__populateMonth();this.__handleCallBack('monthChange');},__moveOneYearForward:function(){this.model.__moveOneYearForward();this.__populateHeading();this.__populateMonth();this.__handleCallBack('monthChange');},
__moveOneMonthBack:function(){if(!this.div)this.__init();this.model.__moveOneMonthBack();this.__populateHeading();this.__populateMonth();this.__handleCallBack('monthChange');},
__moveOneMonthForward:function(){if(this.model.initialMonth>=this.model.displayedMonth)this.model.__moveOneMonthForward();this.__populateHeading();this.__populateMonth();this.__handleCallBack('monthChange');},
__addEvents:function(){var ind=this.objectIndex;this.divElementClose.onmouseover=this.__mouseoverCalendarButton;this.divElementClose.onmouseout=this.__mouseoutCalendarButton;
	this.divElementClose.onclick=function(e){DSuite.varStor.arrayObj[ind].hide();}
DSuite.commonObj.__addEventElement(this.divElementClose);this.divBtnPrevMonth.onmouseover=this.__mouseoverCalendarButton;this.divBtnPrevMonth.onmouseout=this.__mouseoutCalendarButton;
	this.divBtnPrevMonth.onclick=function(e){DSuite.varStor.arrayObj[ind].__moveOneMonthBack();}
DSuite.commonObj.__addEventElement(this.divBtnPrevMonth);this.divBtnNextMonth.onmouseover=this.__mouseoverCalendarButton;this.divBtnNextMonth.onmouseout=this.__mouseoutCalendarButton;
	this.divBtnNextMonth.onclick=function(e){DSuite.varStor.arrayObj[ind].__moveOneMonthForward();}
DSuite.commonObj.__addEventElement(this.divBtnNextMonth);for(index=0;index<this.displayMonths;index++){this.divYear[index].onmouseover=this.__mouseoverMonthAndYear;this.divYear[index].onmouseout=this.__mouseoutMonthAndYear;this.divYear[index].id='year_'+index;
	this.divYear[index].onclick=function(e){DSuite.varStor.arrayObj[ind].__showHideDropDownBoxYear(this.id.split('_')[1]);}
DSuite.commonObj.__addEventElement(this.divYear[index]);}for(index=0;index<this.displayMonths;index++){this.divMonthName[index].onmouseover=this.__mouseoverMonthAndYear;this.divMonthName[index].onmouseout=this.__mouseoutMonthAndYear;this.divMonthName[index].id='month_'+index;
	this.divMonthName[index].onclick=function(e){DSuite.varStor.arrayObj[ind].__showHideDropDownBoxMonth(this.id.split('_')[1]);}
DSuite.commonObj.__addEventElement(this.divMonthName[index]);}this.divHeading.onselectstart=DSuite.commonObj.cancelEvent;DSuite.commonObj.__addEventElement(this.divHeading);DSuite.commonObj.addEvent(document.documentElement,'click',function(e){DSuite.varStor.arrayObj[ind].__autoHideDropDownBoxes(e);},ind+'');},
__resizePrimaryIframeElement:function(){if(!this.iframe)return;this.iframe.style.width=this.div.clientWidth+'px';this.iframe.style.height=this.div.clientHeight+'px';},
__scrollInYearDropDown:function(scrollDirection){if(!this.scrollYear)return;var ind=this.objectIndex;this.yearDropOffset+=scrollDirection;this.__populateYearsDrop();setTimeout('DSuite.varStor.arrayObj['+ind+'].__scrollInYearDropDown('+scrollDirection+')',200);},
__mouseoverYearInDropDown:function(){this.className=this.className+' calendar_dropdownAYearOver';},
__mouseoutYearInDropDown:function(){this.className=this.className.replace(' calendar_dropdownAYearOver','');},
__mouseoverMonthInDropDown:function(){this.className=this.className+' calendar_dropdownAMonthOver';},
__mouseoutMonthInDropDown:function(){this.className=this.className.replace(' calendar_dropdownAMonthOver','');},
__mouseoverCalendarDay:function(){this.className=this.className+' calendarDayOver';},
__mouseoutCalendarDay:function(){this.className=this.className.replace(' calendarDayOver','');},
__mouseoverCalendarButton:function(){this.className=this.className+' calendarButtonOver';},
__mouseoutCalendarButton:function(){this.className=this.className.replace(' calendarButtonOver','');},
__mouseoverMonthAndYear:function(){this.className=this.className+' calendarHeaderMonthAndYearOver';},
__mouseoutMonthAndYear:function(){this.className=this.className.replace(' calendarHeaderMonthAndYearOver','');},
__getDaysMondayToSunday:function(){return this.dayArray;},
__getDaysSundayToSaturday:function(){var retArray=this.dayArray.concat();var lastDay=new Array(retArray[retArray.length-1]);retArray.pop();return lastDay.concat(retArray);},
__positionCalendar:function()
{
	if(!this.posReference)return;
	this.div.style.position='absolute';
	this.div.style.left=(DSuite.commonObj.getLeftPos(this.posReference)+this.posX - 215)+'px';
	this.div.style.top=(DSuite.commonObj.getTopPos(this.posReference)+this.posY)+'px';

	if(navigator.userAgent.indexOf('Safari') > -1)
	{
		this.div.style.top = document.body.scrollTop + DSuite.commonObj.getTopPos(this.posReference) + this.posY + 'px';			
	}
	
},
__setInitialData:function(prop){if(prop.id)this.id=prop.id;if(prop.target)this.target=prop.target;if(prop.model)this.model=prop.model;if(prop.callbackDayClick)this.callbackDayClick=prop.callbackDayClick;if(prop.callbackDayDoubleClick)this.callbackDayDoubleClick=prop.callbackDayDoubleClick;if(prop.callbackMonthChange)this.callbackMonthChange=prop.callbackMonthChange;if(prop.callbackClose)this.callbackClose=prop.callbackClose;if(prop.displayCloseButton||prop.displayCloseButton===false)this.displayCloseButton=prop.displayCloseButton;if(prop.displayNavigationBar||prop.displayNavigationBar===false)this.displayNavigationBar=prop.displayNavigationBar;if(prop.numberYearDrop)this.numberYearDrop=prop.numberYearDrop;if(prop.isDragable||prop.isDragable===false)this.isDragable=prop.isDragable;if(prop.displayLegend||prop.displayLegend===false)this.displayLegend=prop.displayLegend;if(prop.minDate)this.minDate=prop.minDate;if(prop.maxDate)this.maxDate=prop.maxDate;if(prop.blockPastDays||prop.blockPastDays===false)this.blockPastDays=prop.blockPastDays;if(prop.displayMonths)this.displayMonths=prop.displayMonths;if(prop.months)this.monthArray=prop.months;if(prop.days)this.dayArray=prop.days;if(prop.legend)this.legend=prop.legend;if(prop.title)this.title=prop.title;if(prop.format)this.format=prop.format;if(prop.layoutCSS)this.layoutCSS=prop.layoutCSS;},
__addDisplayEvents:function(){document.onclick=function(e){if(document.all)e=event;var mouseX=e.clientX;var mouseY=e.clientY;var left=calendar.div.style.left.replace('px','')/1;var top=calendar.div.style.top.replace('px','')/1;if(!((mouseX>=left&&mouseX<=left+calendar.div.clientWidth)&&(mouseY>=top&&mouseY<=top+calendar.div.clientHeight)))calendar.hide();}
document.onkeyup=function(e){if(e==null){keycode=event.keyCode;}else{keycode=e.which;}if(keycode==27){calendar.hide();}}},
__removeDisplayEvents:function(){document.onclick=null;document.onkeyup=null;}
}
var availStorage=Array();var arrivalId='';var departureId='';var arrivalDate,departureDate;
function ClearSelection(){var references=calendar.getReferences();references.myDate.value='';if(references.myDate.id==arrivalDateId){arrivalId='';arrivalDate=false;}else{departureId='';departureDate=false;}var clear=document.getElementById('showClear').innerHTML;CalendarCustomize(calendar.title,clear,calendar.getReferences().myDate);calendar.__handleCallBack('monthChange');}
function pickDate(inputObject,title,clear){var references=calendar.getReferences();if(references.myDate)if(references.myDate.id!=inputObject.id&&calendar.isVisible())calendar.hide();calendar.setPosition(inputObject,-2,inputObject.offsetHeight+1);calendar.addReference('myDate',inputObject);if(inputObject.id==arrivalDateId){var inputDeparture=document.getElementById(departureDateId);if(inputDeparture.value!=''&&inputDeparture.value!=calendar.format){if(departureId!=''){calendar.setInitialDate(inputDeparture);departureId=calendar.model.displayedYear+'_'+calendar.model.displayedMonth+'_'+calendar.model.displayedDay;departureDate={year:calendar.model.displayedYear,month:calendar.model.displayedMonth,day:calendar.model.displayedDay};if(arrivalId==''&&!(calendar.minDate.month==departureDate.month&&calendar.minDate.year==departureDate.year))calendar.__moveOneMonthBack();}}else{departureId='';departureDate=false;}if(inputObject.value!=''&&inputObject.value!=calendar.format){calendar.setInitialDate(inputObject);arrivalId=calendar.model.displayedYear+'_'+calendar.model.displayedMonth+'_'+calendar.model.displayedDay;arrivalDate={year:calendar.model.displayedYear,month:calendar.model.displayedMonth,day:calendar.model.displayedDay};}else{arrivalId='';arrivalDate=false;}}else{if(inputObject.value!=''&&inputObject.value!=calendar.format){calendar.setInitialDate(inputObject);departureId=calendar.model.displayedYear+'_'+calendar.model.displayedMonth+'_'+calendar.model.displayedDay;departureDate={year:calendar.model.displayedYear,month:calendar.model.displayedMonth,day:calendar.model.displayedDay};if(arrivalId==''&&!(calendar.minDate.month==departureDate.month&&calendar.minDate.year==departureDate.year))calendar.__moveOneMonthBack();}else{departureId='';departureDate=false;}var inputArrival=document.getElementById(arrivalDateId);if(inputArrival.value!=''&&inputArrival.value!=calendar.format){if(arrivalId!=''){calendar.setInitialDate(inputArrival);arrivalId=calendar.model.displayedYear+'_'+calendar.model.displayedMonth+'_'+calendar.model.displayedDay;arivalDate={year:calendar.model.displayedYear,month:calendar.model.displayedMonth,day:calendar.model.displayedDay};}}else{arrivalId='';arrivalDate=false;}}if(calendar.isVisible()){calendar.hide();}else{calendar.title=title;calendar.resetViewDisplayedMonth();calendar.display();CalendarCustomize(title,clear,inputObject);calendar.__handleCallBack('monthChange');ApplyCssSelected();}}
function CalendarCustomize(title,clear,inputObject){if((arrivalId!=''&&departureId!='')||(arrivalId!=''&&departureId==''&&inputObject.id==departureDateId)||(arrivalId==''&&departureId!=''&&inputObject.id==arrivalDateId))title+=stayTitle;else title+=dayTitle;var arrivalLegend=document.getElementById('arrivalLegend');var departureLegend=document.getElementById('departureLegend');var showClear=document.getElementById('showClear');if(arrivalId==''&&departureId==''){arrivalLegend.style.display='none';departureLegend.style.display='none';showClear.style.display='none';}else{if(arrivalId!=''&&departureId!=''){arrivalLegend.style.display='none';departureLegend.style.display='none';showClear.style.display='';}else{showClear.style.display='none';if(arrivalId!=''){arrivalLegend.style.display='';if(inputObject.id==arrivalDateId)showClear.style.display='';}else arrivalLegend.style.display='none';if(departureId!=''){departureLegend.style.display='';if(inputObject.id==departureDateId)showClear.style.display='';}else departureLegend.style.display='none';}}document.getElementById('calendar_title').innerHTML=title;document.getElementById('showClear').innerHTML=clear;}
function SelectDateFromCalendar(inputArray){var references=calendar.getReferences();references.myDate.value=inputArray.date;if(references.myDate.id==arrivalDateId){arrivalId=inputArray.year+'_'+inputArray.month+'_'+inputArray.day;arrivalDate={year:inputArray.year,month:inputArray.month,day:inputArray.day};}else{departureId=inputArray.year+'_'+inputArray.month+'_'+inputArray.day;departureDate={year:inputArray.year,month:inputArray.month,day:inputArray.day};}MonthChange(inputArray);}
function SelectDateFromCalendarAndClose(inputArray){var references=calendar.getReferences();references.myDate.value=inputArray.date;if(references.myDate.id==arrivalDateId){arrivalId=inputArray.year+'_'+inputArray.month+'_'+inputArray.day;arrivalDate={year:inputArray.year,month:inputArray.month,day:inputArray.day};}else{departureId=inputArray.year+'_'+inputArray.month+'_'+inputArray.day;departureDate={year:inputArray.year,month:inputArray.month,day:inputArray.day};}calendar.hide();ApplyCssSelected(true);}
function CloseCalendar(inputArray){calendar.hide();}
function MonthChange(inputArray){inputArray.initialMonth=inputArray.initialMonth/1;ApplyCss(calendar.getReferences().myDate.id==arrivalDateId,inputArray.initialYear,inputArray.initialMonth);var month=inputArray.initialMonth+1;var year=inputArray.initialYear;if(month>12){month=1;year++;}ApplyCss(calendar.getReferences().myDate.id==arrivalDateId,year,month);ApplyCssSelected();}
function ApplyCss(arrival,year,month){if(arrival){if(departureId==''){var state=GetMonthAvailability(year,month,year,month);if(!state)return false;ApplyCssMonth(year,month,state);}else ApplyCssArrival(year,month);}else{if(arrivalId==''){var previousYear=year;var previousMonth=month-1;if(previousMonth<1){previousMonth=12;previousYear--;}var previousState=GetMonthAvailability(previousYear,previousMonth,year,month);if(!previousState)return false;var state=GetMonthAvailability(year,month,year,month);if(!state)return false;ApplyCssMonthA(year,month,state,previousState[previousState.length-1]);}else ApplyCssDeparture(year,month);}}
function callback(res){if(res.value!=null){var year=res.value[0];var month=res.value[1];var originalYear=res.value[2];var originalMonth=res.value[3];var state=Array();for(index=4;index<res.value.length;index++)state[index-4]=res.value[index];availStorage[availStorage.length]={year:year,month:month,state:state};if(originalMonth!=0&&originalYear!=0)ApplyCss(calendar.getReferences().myDate.id==arrivalDateId,originalYear,originalMonth);else ApplyCssSelected();}}
function ApplyCssMonth(year,month,state){for(index=0;index<state.length;index++){var id=year+'_'+month+'_'+(index+1);var element=document.getElementById(id);if(element)ApplyCssDay(element,state[index],0);}}
function ApplyCssMonthA(year,month,state,firstDay){var id=year+'_'+month+'_1';var element=document.getElementById(id);if(element)ApplyCssDay(element,firstDay,0);var today=new Date();for(index=1;index<state.length;index++){id=year+'_'+month+'_'+(index+1);element=document.getElementById(id);if(element)ApplyCssDay(element,state[index-1],0);}}
function ApplyCssDeparture(year,month){var count=0;if(arrivalDate.year>year||(arrivalDate.year==year&&arrivalDate.month>month)){for(index=0;index<31;index++){var id=year+'_'+month+'_'+(index+1);var element=document.getElementById(id);if(element)InvalidateElement(element);}}else{var nextDay=0;var state=GetMonthAvailability(arrivalDate.year,arrivalDate.month,year,month);if(!state)return false;if(arrivalDate.year==year&&arrivalDate.month==month){for(index=0;index<state.length;index++){var id=year+'_'+month+'_'+(index+1);var element=document.getElementById(id);if(element){if(index<=arrivalDate.day-1){InvalidateElement(element);if(element.id==arrivalId)element.className+=' calendar_arrivalDay';}else{count++;if(maxDays>0&&count>maxDays)nextDay=2;switch(nextDay){case 0:case 1:nextDay=ApplyCssDay(element,state[index-1],nextDay);break;case 2:InvalidateElement(element);break;}}}}}else{for(index=arrivalDate.day;index<state.length;index++){if(state[index]!=0){nextDay=state[index];if(state[index]==2)break;}}count=state.length-arrivalDate.day;var firstDay=state[state.length-1];var nextMonth=arrivalDate.month+1;var nextYear=arrivalDate.year;if(nextMonth>12){nextMonth=1;nextYear++;}while(!(year==nextYear&&month==nextMonth)){count+=getNumberOfDaysInMonth(nextYear,nextMonth);if(nextDay==0){nextDay=firstDay;if(nextDay==0){state=GetMonthAvailability(nextYear,nextMonth,year,month);if(!state)return false;for(index=1;index<state.length;index++){if(state[index]!=0){nextDay=state[index];if(state[index]==2)break;}}firstDay=state[state.length-1];}}nextMonth++;if(nextMonth>12){nextMonth=1;nextYear++;}}if(maxDays>0&&count>maxDays)nextDay=2;switch(nextDay){case 0:case 1:state=GetMonthAvailability(year,month,year,month);if(!state)return false;for(index=0;index<state.length;index++){count++;if(maxDays>0&&count>maxDays)nextDay=2;var id=year+'_'+month+'_'+(index+1);var element=document.getElementById(id);if(element){if(nextDay!=2){if(index==0)nextDay=ApplyCssDay(element,firstDay,nextDay);else nextDay=ApplyCssDay(element,state[index-1],nextDay);}else InvalidateElement(element);}}break;case 2:for(index=0;index<31;index++){var id=year+'_'+month+'_'+(index+1);var element=document.getElementById(id);if(element)InvalidateElement(element);}break;}}}}
function ApplyCssArrival(year,month){var count=0;if(departureDate.year<year||(departureDate.year==year&&departureDate.month<month)){for(index=0;index<31;index++){var id=year+'_'+month+'_'+(index+1);var element=document.getElementById(id);if(element)InvalidateElement(element);}}else{var previousDay=0;var state=GetMonthAvailability(departureDate.year,departureDate.month,year,month);if(!state)return false;if(departureDate.year==year&&departureDate.month==month){for(index=state.length-1;index>=0;index--){var id=year+'_'+month+'_'+(index+1);var element=document.getElementById(id);if(element){if(index>=departureDate.day-1){InvalidateElement(element);if(element.id==departureId)element.className+=' calendar_departureDay';}else{count++;if(maxDays>0&&count>maxDays)previousDay=2;switch(previousDay){case 0:case 1:previousDay=ApplyCssDay(element,state[index],previousDay);break;case 2:InvalidateElement(element);break;}}}}}else{for(index=departureDate.day-2;index>=0;index--){if(state[index]!=0){previousDay=state[index];if(state[index]==2)break;}}count=departureDate.day-1;var previousMonth=departureDate.month-1;var previousYear=departureDate.year;if(previousMonth<1){previousMonth=12;previousYear--;}while(!(year==previousYear&&month==previousMonth)){count+=getNumberOfDaysInMonth(previousYear,previousMonth);if(previousDay!=2){state=GetMonthAvailability(previousYear,previousMonth,year,month);if(!state)return false;for(index=state.length-1;index>=0;index--){if(state[index]!=0){previousDay=state[index];if(state[index]==2)break;}}}previousMonth--;if(previousMonth<1){previousMonth=12;previousYear--;}}if(maxDays>0&&count>maxDays)previousDay=2;switch(previousDay){case 0:case 1:state=GetMonthAvailability(year,month,year,month);if(!state)return false;for(index=state.length-1;index>=0;index--){count++;if(maxDays>0&&count>maxDays)previousDay=2;var id=year+'_'+month+'_'+(index+1);var element=document.getElementById(id);if(element){if(previousDay!=2)previousDay=ApplyCssDay(element,state[index],previousDay);else InvalidateElement(element);}}break;case 2:for(index=0;index<31;index++){var id=year+'_'+month+'_'+(index+1);var element=document.getElementById(id);if(element)InvalidateElement(element);}break;}}}}
function InvalidateElement(element){element.className='calendar_invalidDay';element.onclick='';element.ondblclick='';element.onmouseover='';element.onmouseout='';}
function ApplyCssDay(element,s,nextDay){var res=s;switch(s){case 0:if(nextDay==1){element.className='calendar_requestDay';res=1;}else element.className='calendar_availDay';break;case 1:element.className='calendar_requestDay';break;case 2:InvalidateElement(element);break;}if(element.id==arrivalId)element.className+=' calendar_arrivalDay';if(element.id==departureId)element.className+=' calendar_departureDay';return res;}
/******************/
function ApplyCssSelected(calendarHidden)
{
	if(arrivalId!=''&&departureId!='')
	{
		var from=new Date(arrivalDate.year,arrivalDate.month-1,arrivalDate.day,0,0,0);
		var to=new Date(departureDate.year,departureDate.month-1,departureDate.day,0,0,0);
		var isRequest=false;
		var state=GetMonthAvailability(arrivalDate.year,arrivalDate.month,0,0);

		var nights=-1;
	
		if(!calendarHidden)
		{
			for(index=arrivalDate.day-1;index<state.length;index++)
			{
				if(departureDate.year==arrivalDate.year&&departureDate.month==arrivalDate.month&&departureDate.day==index+1)
					break;
				if(state[index]==1)
				{
					isRequest=true;
					break;
				}
			}
			if(!isRequest)
			{
				var year=arrivalDate.year;
				var month=arrivalDate.month+1;
				if(month>12)
				{
					month=1;
					year++;
				}
				while(!isRequest&&(year<departureDate.year||(year==departureDate.year&&month<=departureDate.month)))
				{
					state=GetMonthAvailability(year,month,0,0);
					for(index=0;index<state.length;index++)
					{
						if(departureDate.year==year&&departureDate.month==month&&departureDate.day==index+1)
							break;
						if(state[index]==1)
						{
							isRequest=true;
							break;
						}
					}
					month++;
					if(month>12)
					{
						month=1;
						year++;
					}
				}
			}
		}
		while(from<=to)
		{
			nights++;
			if(!calendarHidden)
			{
				var id=from.getFullYear()+'_'+(from.getMonth()+1)+'_'+from.getDate();
				var element=document.getElementById(id);
				if(element)
				{
					if(isRequest)element.className='calendar_selectedRequestDay';
					else
					{
						if(element.className!='calendar_invalidDay')element.className='calendar_selectedAvailDay';
					}
				}
			}
			from=GetNextDay(from);
		}
		document.getElementById(nightsId).value=nights;
	}
	else 
		document.getElementById(nightsId).value='';
}
/******************/
function GetNextDay(from){var year=from.getFullYear();var month=from.getMonth()+1;var day=from.getDate();if(day+1>getNumberOfDaysInMonth(year,month)){day=1;month++;if(month>12){month=1;year++;}}else day++;return new Date(year,month-1,day);}
function getNumberOfDaysInMonth(year,month){var daysInMonthArray=[31,28,31,30,31,30,31,31,30,31,30,31];var daysInMonth=daysInMonthArray[month-1];if(daysInMonth==28){if(isLeapYear(year))daysInMonth=29;}return daysInMonth/1;}
function isLeapYear(year){if(year%400==0||(year%4==0&&year%100!=0))return true;return false;}