
// - - - - - BASE PREPARATION - - - - - //

	var browser = navigator.appName;	
	var	dom=document.getElementById; 				 // checks for DOM object on browser
	var	ie=(browser=="Microsoft Internet Explorer"); // checks for IE browser
	var	ns4=(browser=="Netscape");		 			 // checks for Netscape based browsers
	var	bPageLoaded=false;			 				 // become "true" when the page is loaded	
	var bShow = false;
	var calendarShown=false;
		
// - - - - - // END BASE PREPARATION // - - - - - //

//- - - - - - - - - - - -  CALENDAR SETTINGS - - - - - - - - - - - //

	var	fixedX = -1;				// x position (-1 if to appear below control)
	var	fixedY = -1;				// y position (-1 if to appear below control)
	var monthDropDownX = 80;		// x position move (left < 70 > right) 	
	var monthDropDownY = 26;		// y position move (up < 26 > down)	
	var yearDropDownX = 160;			// x position move (left < 25 > right) 	
	var yearDropDownY = 26;			// y position move (up < 26 > down)	
	var globalLeftOffset = -118;	// 0 - none; positive moves -> right, negative ->left
	var globalTopOffset = -6;		// 0 - none; positive moves -> bottom, negative ->top		
	var startAt = 1;				// 0 - sunday ; 1 - monday
	var showWeekNumber = 1;			// 0 - don't show; 1 - show
	var showToday = 0;				// 0 - don't show; 1 - show
	var showHour = 0;				// 0 - don't show; 1 - show
	var showMinutes = 1;			// 0 - don't show; 1 - show
	var showSeconds = 1;			// 0 - don't show; 1 - show
	var calendarDrag = 0;			// 0 - don't drag; 1 - drag
	var calendarAlpha = "96";		// 0 - transparent; 100 - solid;
	var calendarDragAlpha = "96";	// 0 - transparent; 100 - solid; 80 - default 
	var gotoString = ""; 			//"Go To Current Month"	
	var todayString = "Днес е"; 	//"Today is"	
	var weekString = "";			//"Wk"
	var scrollLeftMessage = "";		//"Click to scroll to previous month. Hold mouse button to scroll automatically."	
	var scrollRightMessage = ""; 	//"Click to scroll to next month. Hold mouse button to scroll automatically."
	var selectMonthMessage = ""; 	//"Click to select a month."
	var selectYearMessage = ""; 	//"Click to select a year."
	var selectDateMessage = "Select [date] as date."; // do not replace [date], it will be replaced by date.	//var selectDateMessage = "Select [date] as date." // do not replace [date], it will be replaced by date.

	var	crossobj, crossMonthObj, crossYearObj, monthSelected, yearSelected, dateSelected, omonthSelected, oyearSelected, odateSelected, monthConstructed, yearConstructed, intervalID1, intervalID2, timeoutID1, timeoutID2, ctlToPlaceValue, ctlToPlaceValue1 , ctlNow, dateFormat, nStartingYear;
	
	var dragapproved=false; // when drag event appears
	var z,mouse_x,mouse_y;
		
	var currentFilter= (!ns4) ? "filter:alpha(opacity="+calendarAlpha+");" : "-moz-opacity:"+(parseInt(calendarAlpha, 10)/100)+";";
	var unlock = true;
	
	//----> CONFIGURE DATE DATA <----//
	
	var	today =	new	Date();
	var	dateNow	 = today.getDate();      // get the current day	
	var	monthNow = today.getMonth();     // get the current month
	var	yearNow	 = today.getFullYear();  // get the current year
	var hourNow  = today.getHours();     // get the current hour
	var minuteNow = today.getMinutes();  // get the current minutes
	//var secondNow = today.getSeconds();  // get the current seconds    
	var dayName; 						 // array that will contains the sequence of the days oh week
	var tickCalendar;
	//----// END CONFIGURE DATE DATA //----//   
	
	//---> IMAGES <----//
	
	var imgDir = setImgDir; 			// directory for images ... e.g. var imgDir="/img/" should be declared	
	imgDir += "calendar/";				// default directory for calendar images' parts...
	var emptyImg="empty.gif";
	var emptyImgWidth=1;
	
	// top banner //
	
	var leftArrowImg="left.gif";
	var leftArrowHoverImg="left2.gif";// set the same as leftArrowHoverImg to not use hover function
	var leftArrowImgWidth=21;
	var leftArrowImgHeight=19;
	
	var rightArrowImg="right.gif";
	var rightArrowHoverImg="right2.gif";// set the same as rightArrowHoverImg to not use hover function
	var rightArrowImgWidth=21;
	var rightArrowImgHeight=19;
	
	var dropArrowImg="drop.gif";
	var dropArrowHoverImg="drop2.gif";// set the same as dropArrowHoverImg to not use hover function
	var dropArrowImgWidth=21;
	var dropArrowImgHeight=19;
	
	var dropImgBg="empty.gif";		
	var dropLeftBorderImgBg="empty.gif";
	var dropRightBorderImgBg="empty.gif";
	
	var dropImgHoverBg="drop_bg.gif";		
	var dropLeftBorderImgHoverBg="drop_left_border.gif";
	var dropRightBorderImgHoverBg="drop_right_border.gif";
	
	var closeButtonImg="close.gif";
	var closeButtonHoverImg="close2.gif" // set the same as closeButtonImg to not use hover function
	var closeButtonAlt="Затвори Календара";
	var closeButtonImgWidth=21;
	var closeButtonImgHeight=19;
	
	var bannerBgImg="banner_bg2.gif"; // set "" to use bgcolor value instead of background
	var bannerBgImgHeight=25;
	// end top banner //
	
	// bottom banner //
	var bottomBannerBgImg="bottom_banner_bg.gif";
	var bottomBannerBgColor="#F1F1F1";
	var bottomBannerHeight=24;
	
	//end bottom banner//
	
	//---// END IMAGES //---//
	
	//---> STYLES <---//
	
	mainDIVStyle="z-index:+999;position:absolute;visibility:hidden;";
	mainBorderColor="#A6BE9A";
	mainTableStyle="font-family:Arial;font-size:11px;border-width:1;border-style:solid;border-color:"+mainBorderColor+";opacity:"+calendarAlpha+";" + currentFilter+ "";	
	mainTableBgColor="#FFFFFF";
	bannerBg="#B58484";
	topBannerColor="#9D4947";
	topBannerFont="color:"+topBannerColor+"; font-family: Tahoma, Verdana, Arial, sans-serif; font-size:11px; font-weight:bold; text-align:center; text-decoration:none";
	bottomBannerFont="padding:5px; color:#000000; font-family: Arial, Verdana, sans-serif; font-size:11px; text-align:center; text-decoration:none";
	mainContentStyle="padding:5px; background-color:#ffffff";
	monthDropDownBorderColor="#a0a0a0";
	monthDropDownBgColor="#FFFFDD";
	monthDropDownStyle="font-family:arial; font-size:11px; border-width:1; border-style:solid; border-color:"+monthDropDownBorderColor+";";	
	monthDropDownHoverColor="#FFCC99";	
	yearDropDownBorderColor="#a0a0a0";
	yearDropDownBgColor="#FFFFDD";
	yearDropDownStyle="font-family:arial; font-size:11px; border-width:1; border-style:solid; border-color:"+yearDropDownBorderColor+";";
	yearDropDownHoverColor="FFCC99";
	
	var	styleAnchor="text-decoration:none;color:black;"; // style of the content (digits)
	var	styleLightBorder="border-style:solid;border-width:1px;border-color:#a0a0a0;"; // border around selected digit
	var monthStyle="z-index:+999;position:absolute;visibility:hidden;"	
	
	//---> END STYLES <---//
	
    /* hides <select> and <applet> objects (for IE only) */
    function hideElement( elmID, overDiv ){
    
      if( ie ){
        for( i = 0; i < document.all.tags( elmID ).length; i++ ){
        
          obj = document.all.tags( elmID )[i];
           if( !obj || !obj.offsetParent )continue;
          
          // Find the element's offsetTop and offsetLeft relative to the BODY tag.
          objLeft   = obj.offsetLeft;
          objTop    = obj.offsetTop;
          objParent = obj.offsetParent;

          while( objParent.tagName.toUpperCase() != "BODY" ) {
            objLeft  += objParent.offsetLeft;
            objTop   += objParent.offsetTop;
            objParent = objParent.offsetParent;
          }

          objHeight = obj.offsetHeight;
          objWidth = obj.offsetWidth;

          if(( overDiv.offsetLeft + overDiv.offsetWidth ) <= objLeft );
          else if(( overDiv.offsetTop + overDiv.offsetHeight ) <= objTop );
          else if( overDiv.offsetTop >= ( objTop + objHeight ));
          else if( overDiv.offsetLeft >= ( objLeft + objWidth ));
          else {
            obj.style.visibility = "hidden";
          }
        }
      }
    }

    /*
    * unhides <select> and <applet> objects (for IE only)
    */
    function showElement( elmID ) {
    
      if(ie){
        for( i = 0; i < document.all.tags( elmID ).length; i++ ) {
          obj = document.all.tags( elmID )[i];

          if( !obj || !obj.offsetParent ) continue;
         
          obj.style.visibility = "";
        }
      }
    }

	function HolidayRec (d, m, y, desc){
		this.d = d;
		this.m = m;
		this.y = y;
		this.desc = desc;
	}

	var HolidaysCounter = 0;
	var Holidays = new Array();

	function addHoliday (d, m, y, desc){
		Holidays[HolidaysCounter++] = new HolidayRec ( d, m, y, desc );
	}

	if (dom){	   
		//document.write ("<div onclick='bShow=true' id='calendar'	style='z-index:+999;position:absolute;visibility:hidden;'><table	width="+((showWeekNumber==1)?250:220)+" style='font-family:arial;font-size:11px;border-width:1;border-style:solid;border-color:#a0a0a0;font-family:arial; font-size:11px}' bgcolor='#ffffff'><tr bgcolor='#0000aa'><td><table width='"+((showWeekNumber==1)?248:218)+"'><tr><td style='padding:2px;font-family:arial; font-size:11px;'><font color='#ffffff'><B><span id='caption'></span></B></font></td><td align=right><a href='javascript:hideCalendar();'><IMG SRC='"+imgDir+"close.gif' WIDTH='15' HEIGHT='13' BORDER='0' ALT='Close the Calendar'></a></td></tr></table></td></tr><tr><td style='padding:5px' bgcolor=#ffffff><span id='content'></span></td></tr>")
		//document.write ("<div onclick='bShow=true' id='calendar'	style='z-index:+999;position:absolute;visibility:hidden;'><table	width="+((showWeekNumber==1)?250:220)+" style='font-family:arial;font-size:11px;border-width:1;border-style:solid;border-color:#7C8BC4;font-family:arial; font-size:11px' bgcolor='#ffffff'><tr bgcolor='#7C8BC4'><td><table width='"+((showWeekNumber==1)?248:218)+"'><tr><td style='padding:2px;font-family:arial; font-size:11px;'><font color='#ffffff'><B><span id='caption'></span></B></font></td><td align=right><a href='javascript:hideCalendar();'><IMG SRC='"+imgDir+"close.gif' WIDTH='15' HEIGHT='13' BORDER='0' ALT='Затвори Календара'></a></td></tr></table></td></tr><tr><td style='padding:5px' bgcolor=#ffffff><span id='content'></span></td></tr>");
	
	//---> MAIN DIV id=calendar' <---//
		document.write ("<div onclick='bShow=true' id='calendar' onmousedown='if (calendarDrag == 1 && unlock) {setAlpha(this,"+calendarDragAlpha+"); drags(event);}' onmousemove='if (dragapproved) move(event);' onmouseup='rollBackAlpha(this); new Function(dragapproved=false);' class='drag' style='"+mainDIVStyle+"'>");
		//--> main table <--//
		document.write ("<table width="+((showWeekNumber==1)?250:220)+" style='"+mainTableStyle+"' bgcolor='"+mainTableBgColor+"'>");
		//--> top banner <--//
			document.write ("<tr valign=middle style='border:0px;border-color:"+mainTableBgColor+"'>");				
				document.write ("<td height='"+bannerBgImgHeight+"' style='padding:0px' >");
		//--> background image goes here... <--//
					document.write ("<table cellpadding='0' cellspacing='0' width='"+((showWeekNumber==1)?248:218)+"' background='"+imgDir+bannerBgImg+"' bgcolor='"+bannerBg+"' height='"+bannerBgImgHeight+"' style='font-family: Arial, Verdana, sans-serif;font-size: 12px;font-weight: bold;text-align: center;text-decoration: none'>");
					document.write ("<tr valign='middle'>");
						document.write ('<td width="2"><img src="'+imgDir+'_left_border.gif" border="0"></td>');		
						document.write ("<td align='center' width='100%' height='100%'>");
							document.write ("<table border='0' cellspacing='0' cellpadding='0' width='100%' height='100%' style='text-align: center;'>");
							document.write ("<tr valign='middle'>");
								document.write ("<td width='100%' height='100%' align='center'>");
									//document.write ("<img src='"+imgDir+emptyImg+"' width='"+emptyImgWidth+"' height='20'>");									
		//--> top banner content goes here arrows,text... <--//
									document.write ("<div id='caption' width='100%' nowrap='nowrap'></div>");									
								document.write ("</td>");
							document.write ("</tr>");
							document.write ("</table>");
						document.write ("</td>");
						document.write ("<td align='center'>");
							document.write ("<a href='javascript:hideCalendar();'>");
		//--> close button image goes here... <--//
							document.write ("<img id='closeButtonImg' onmouseover='swapImage(\"closeButtonImg\",\""+closeButtonHoverImg+"\")'onmouseout='swapImage(\"closeButtonImg\",\""+closeButtonImg+"\")' onmousedown='new Function(unlock=false);' onmouseup='new Function(unlock=true);' src='"+imgDir+closeButtonImg+"' width='"+closeButtonImgWidth+"' height='"+closeButtonImgHeight+"' border='0' alt='"+closeButtonAlt+"'>");
							document.write ("</a>");
						document.write ("</td>");
						document.write ("<td width='4'><img src='"+imgDir+"empty.gif' border='0' width='4'></td>");	
						document.write ("<td width='2'><img src='"+imgDir+"right_border.gif' border='0'></td>");	
					document.write ("</tr>");
					document.write ("</table>");
				document.write ("</td>");
			document.write ("</tr>");
		//--> main content goes here <--//
			document.write ("<tr>");
				document.write ("<td style='"+mainContentStyle+"'>");
		//--> the content is generated here <--//
					document.write ("<span id='content'></span>");
				document.write ("</td>");
			document.write ("</tr>");
	//---// MAIN DIV //---//	

	//---> BOTTOM BANNER <---//
		if (showToday==1){			
			document.write ("<tr valign='middle'>");
			document.write ("<td>");
			document.write("<table border='0' cellspacing='0' cellpadding='0' width='100%' height='"+bottomBannerHeight+"' style='"+bottomBannerFont+"' align='center' background='"+imgDir+bottomBannerBgImg+"' height='24' bgcolor='"+bottomBannerBgColor+"'><tr>");
			document.write("<td width='15%'>");
			document.write("<span id='lblTodayHour'></span>");
			document.write("</td>");
			document.write("<td>");
			//--> content will appear here... <--//
			document.write ("<span id='lblToday'></span>");
			//--// end content //--//
			document.write("</td>");
			document.write("</tr></table>");
			document.write ("</td></tr>");
		}
	//---// END BOTTOM BANNER //---//	
		document.write ("</table></div><div id='selectMonth' style='"+monthStyle+"'></div><div id='selectYear' style='"+monthStyle+"'></div>");
	}

	//var	monthName =	new	Array("January","February","March","April","May","June","July","August","September","October","November","December")
	var	monthName =	new	Array("Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември");
	var	monthName2 = new Array("ЯНР","ФЕВ","МАРТ","АПР","МАЙ","ЮНИ","ЮЛИ","АВГ","СЕПТ","ОКТ","НОЕМВ","ДЕК");
	
	// set the sequence of the week's day
	if (startAt==0) dayName = new Array	("Нед","Пон","Вт","Ср","Четв","Пет","Съб");
	else dayName = new Array ("Пон","Вт","Ср","Четв","Пет","Съб","Нед");	

	// swap the srcImg with the destImg
	function swapImage(srcImg, destImg){		
		 document.getElementById(srcImg).setAttribute("src",imgDir + destImg); 
	}

	function swapMonthOrYearOverImage(element){	
		if (element.id=='spanMonth') {			 
		 document.getElementById('month_drop_l_border_id').setAttribute("src",imgDir + dropLeftBorderImgHoverBg);
		 document.getElementById('month_drop_r_border_id').setAttribute("src",imgDir + dropRightBorderImgHoverBg); 
		 document.getElementById('month_patch_id').style["backgroundImage"]="url('"+imgDir+dropImgHoverBg+"')";
		 document.getElementById('month_text_bg_id').style["backgroundImage"]="url('"+imgDir+dropImgHoverBg+"')";
		 document.getElementById('month_arrow_bg_id').style["backgroundImage"]="url('"+imgDir+dropImgHoverBg+"')";		
		} else {
		 document.getElementById('year_drop_l_border_id').setAttribute("src",imgDir + dropLeftBorderImgHoverBg);
		 document.getElementById('year_drop_r_border_id').setAttribute("src",imgDir + dropRightBorderImgHoverBg); 
		 document.getElementById('year_patch_id').style["backgroundImage"]="url('"+imgDir+dropImgHoverBg+"')";
		 document.getElementById('year_text_bg_id').style["backgroundImage"]="url('"+imgDir+dropImgHoverBg+"')";
		 document.getElementById('year_arrow_bg_id').style["backgroundImage"]="url('"+imgDir+dropImgHoverBg+"')";				
		}
	}

	function swapMonthOrYearOutImage(element){	
		if (element.id=='spanMonth') {			 
		 document.getElementById('month_drop_l_border_id').setAttribute("src",imgDir + dropLeftBorderImgBg);
		 document.getElementById('month_drop_r_border_id').setAttribute("src",imgDir + dropRightBorderImgBg); 
		 document.getElementById('month_patch_id').style["backgroundImage"]="url('"+imgDir+dropImgBg+"')";
		 document.getElementById('month_text_bg_id').style["backgroundImage"]="url('"+imgDir+dropImgBg+"')";
		 document.getElementById('month_arrow_bg_id').style["backgroundImage"]="url('"+imgDir+dropImgBg+"')";				 
		} else {		
		 document.getElementById('year_drop_l_border_id').setAttribute("src",imgDir + dropLeftBorderImgBg);
		 document.getElementById('year_drop_r_border_id').setAttribute("src",imgDir + dropRightBorderImgBg); 
		 document.getElementById('year_patch_id').style["backgroundImage"]="url('"+imgDir+dropImgBg+"')";
		 document.getElementById('year_text_bg_id').style["backgroundImage"]="url('"+imgDir+dropImgBg+"')";
		 document.getElementById('year_arrow_bg_id').style["backgroundImage"]="url('"+imgDir+dropImgBg+"')";				
		} 
	}

	function init()	{
					
		//if (!ns4){
			crossobj=(dom)?document.getElementById("calendar").style : ie? document.all.calendar : document.calendar;
			
			hideCalendar();

			crossMonthObj=(dom)?document.getElementById("selectMonth").style : ie? document.all.selectMonth	: document.selectMonth;
			crossYearObj=(dom)?document.getElementById("selectYear").style : ie? document.all.selectYear : document.selectYear;

			monthConstructed=false;
			yearConstructed=false;

			if (showToday==1) {
				getCurrentTime(showHour);//document.getElementById("lblTodayHour").innerHTML =	getCurrentTime(showHour, showMinutes);
				document.getElementById("lblToday").innerHTML =	"<span class=\"cal\">" + todayString + " <a onmousemove='window.status=\""+gotoString+"\"' onmouseout='window.status=\"\"' title='"+gotoString+"' style='"+styleAnchor+"' href='javascript:monthSelected=monthNow;yearSelected=yearNow;constructCalendar();'>"+dayName[(today.getDay()-startAt==-1)?6:(today.getDay()-startAt)]+", " + dateNow + " " + monthName[monthNow].substring(0,5)	+ "	" +	yearNow	+ "</a>";
			}
			var sHTML1="<table cellspacing='0' cellpadding='0' border='0' align='center'><tr>";
			
			// left arrow			
			sHTML1+="<td><span id='spanLeft' style='cursor:pointer;' onmousedown='new Function(unlock=false); clearTimeout(timeoutID1);timeoutID1=setTimeout(\"StartDecMonth()\",500)' onmouseup='new Function(unlock=true);clearTimeout(timeoutID1);clearInterval(intervalID1)' onmouseover='if(isNormalAlpha(this))swapImage(\"changeLeft\",\""+leftArrowHoverImg+"\");' onclick='javascript:decMonth()'";
			sHTML1+=" onmouseout='clearInterval(intervalID1);swapImage(\"changeLeft\",\""+leftArrowImg+"\");'>";
			sHTML1+="<img id='changeLeft' src='"+imgDir+leftArrowImg+"' width='"+leftArrowImgWidth+"' height='"+leftArrowImgHeight+"' border='0'><img src='"+imgDir+"/empty.gif' border='0' width='4' height='"+leftArrowImgHeight+"'></span></td>";						
			// right arrow
			sHTML1+="<td><span id='spanRight' style='cursor:pointer' onmousedown='new Function(unlock=false);clearTimeout(timeoutID1);timeoutID1=setTimeout(\"StartIncMonth()\",500);' onmouseup='new Function(unlock=true);clearTimeout(timeoutID1);clearInterval(intervalID1);' onmouseover='swapImage(\"changeRight\",\""+rightArrowHoverImg+"\");' onclick='incMonth()'";
			sHTML1+=" onmouseout='clearInterval(intervalID1);swapImage(\"changeRight\",\""+rightArrowImg+"\");'>";
			sHTML1+="<img id='changeRight' src='"+imgDir+rightArrowImg+"' width='"+rightArrowImgWidth+"' height='"+rightArrowImgHeight+"' border='0'><img src='"+imgDir+"/empty.gif' border='0' width='12' height='"+rightArrowImgHeight+"'></span></td>";
			
			// drop arrow month
			sHTML1+="<td><div id='spanMonth' style='cursor:pointer;' onmousedown='new Function(unlock=false);' onmouseup='new Function(unlock=true);' onmouseover='swapMonthOrYearOverImage(this);' onmouseout='swapMonthOrYearOutImage(this);' onclick='monthConstructed=false;popUpMonth()'></div></td>";			
			
			// drop arrow year
			sHTML1+="<td><div id='spanYear' style='cursor:pointer' onmousedown='new Function(unlock=false);' onmouseup='new Function(unlock=true);' onmouseover='swapMonthOrYearOverImage(this);' onmouseout='swapMonthOrYearOutImage(this);' onclick='popUpYear()'></div></td>";			
			// draw the calendar on the page
			sHTML1+="</tr></table>";			
			document.getElementById("caption").innerHTML  =	sHTML1;

			setDisabledAlphaCursor(document.getElementById('spanLeft'));

			bPageLoaded=true;						
		//}
	}

	function hideCalendar()	{	
		if (crossobj != undefined)
			crossobj.visibility="hidden";
		
		if (crossMonthObj != null){crossMonthObj.visibility="hidden";}
		if (crossYearObj !=	null){crossYearObj.visibility="hidden";}

	    showElement( 'SELECT' );
		showElement( 'APPLET' );
		calendarShown = false;
		if (document.getElementById('calendar_btn_id') != undefined){
			document.getElementById('calendar_btn_id').style["backgroundImage"]='';
		}
	}

	function padZero(num) {
		return (num	< 10)? '0' + num : num;
	}

	function constructDate(d,m,y) {
		sTmp = dateFormat;
		sTmp = sTmp.replace	("dd","<e>");
		sTmp = sTmp.replace	("d","<d>");
		sTmp = sTmp.replace	("<e>",padZero(d));
		sTmp = sTmp.replace	("<d>",d);
		sTmp = sTmp.replace	("mmmm","<p>");
		sTmp = sTmp.replace	("mmm","<o>");
		sTmp = sTmp.replace	("mm","<n>");
		sTmp = sTmp.replace	("m","<m>");
		sTmp = sTmp.replace	("<m>",m+1);
		sTmp = sTmp.replace	("<n>",padZero(m+1));
		sTmp = sTmp.replace	("<o>",monthName[m]);
		sTmp = sTmp.replace	("<p>",monthName2[m]);
		sTmp = sTmp.replace	("yyyy",y);
		return sTmp.replace ("yy",padZero(y%100));
	}

	function closeCalendar() {		
		var	sTmp;
		hideCalendar();		
		ctlToPlaceValue.value = constructDate(dateSelected,monthSelected,yearSelected);
		ctlToPlaceValue1.value = ctlToPlaceValue.value;	
		if (ctlToPlaceValue.name == "fromDate") {
	        var tmpNewDate = new Date;
	        tmpNewDate.setFullYear(yearSelected);
	        tmpNewDate.setMonth(monthSelected, dateSelected);
			firstPossibleReturnDate = tmpNewDate.getTime();
			clearFilters(filterFromDate); 
			loadFilterParameters(filterFromDate, ctlToPlaceValue.value);	
		} else if (ctlToPlaceValue.name == "returnDate") {
			clearFilters(filterReturnDate); 
			loadFilterParameters(filterReturnDate, ctlToPlaceValue.value);	
		}										
	} 

	/*** Month Pulldown	***/

	function StartDecMonth(){
		intervalID1=setInterval("decMonth()",80);
	}

	function StartIncMonth(){
		intervalID1=setInterval("incMonth()",80);
	}

	function incMonth () {
		monthSelected++;
		if (monthSelected>11) {
			monthSelected=0;
			yearSelected++;
		}
		constructCalendar();		
	}

	function allowDecreaseMonth() {
		if (yearSelected > yearNow || (yearSelected == yearNow && monthSelected > monthNow)) return true;
		else return false;
	};
	function decMonth () {	
	//remove (if condition) if you want to select previous months		
		if (allowDecreaseMonth()) {
			monthSelected--;
			if (monthSelected<0) {
				monthSelected=11;
				yearSelected--;
			}			
		}
		constructCalendar();
	}

	function constructMonth() {
		popDownYear();		
		if (!monthConstructed) {
			sHTML =	"";
			for	(i=0; i<12;	i++) {
				sName =	monthName[i];
				if (i==monthSelected){
					sName =	"<B>" +	sName +	"</B>";
				}
				// set style & build the MONTH drop down menu //				
				if (checkPreviousMonth(i)) {
					sHTML += "<tr><td id='m" + i + "' onmouseover='this.style.backgroundColor=\""+monthDropDownHoverColor+"\"' onmouseout='this.style.backgroundColor=\"\"' style='cursor:pointer' onclick='monthConstructed=false;monthSelected=" + i + ";constructCalendar();popDownMonth();event.cancelBubble=true'>" + sName + "</td></tr>";
				} else {
					sHTML += "<tr><td id='m" + i + "' onmouseout='this.style.backgroundColor=\"\"'  style='color:#CCCCCC' onclick='monthConstructed=false;constructCalendar();popDownMonth();event.cancelBubble=true'>" + sName + "</td></tr>";
				}
			}
				// put the MONTH drop down menu on page//
			document.getElementById("selectMonth").innerHTML = "<table width='70' style='"+monthDropDownStyle+"' bgcolor='"+monthDropDownBgColor+"' cellspacing='0' onmouseover='clearTimeout(timeoutID1)'	onmouseout='clearTimeout(timeoutID1);timeoutID1=setTimeout(\"popDownMonth()\",100);event.cancelBubble=true'>" +	sHTML +	"</table>";

			monthConstructed=true;
		}
	}

	function popUpMonth() {
		constructMonth();
		crossMonthObj.visibility = (dom||ie)? "visible"	: "show";
		crossMonthObj.left = parseInt(crossobj.left) + monthDropDownX;		
		crossMonthObj.top =	parseInt(crossobj.top) + monthDropDownY;

		hideElement( 'SELECT', document.getElementById("selectMonth") );
		hideElement( 'APPLET', document.getElementById("selectMonth") );
	}

	function popDownMonth()	{
		crossMonthObj.visibility= "hidden";
	}

	function checkPreviousMonth(monthIndex) {	
		if (yearSelected > yearNow) return true;
		else if (yearSelected == yearNow && monthIndex >= monthNow) return true;
		else return false;
	}
	/*** Year Pulldown ***/

	function incYear() {
		for	(i=0; i<7; i++){
			newYear	= (i+nStartingYear)+1;
			if (newYear==yearSelected)
			{ txtYear =	"&nbsp;<B>"	+ newYear +	"</B>&nbsp;"; }
			else
			{ txtYear =	"&nbsp;" + newYear + "&nbsp;"; }
			document.getElementById("y"+i).innerHTML = txtYear;
		}
		nStartingYear ++;
		bShow=true;
	}

	function decYear() {
	// remove (the if condition if you want to choose previous years)
		if (nStartingYear > yearNow) {
			for	(i=0; i<7; i++){
				newYear	= (i+nStartingYear)-1;
				if (newYear==yearSelected)
				{ txtYear =	"&nbsp;<B>"	+ newYear +	"</B>&nbsp;"; }
				else
				{ txtYear =	"&nbsp;" + newYear + "&nbsp;"; }
				document.getElementById("y"+i).innerHTML = txtYear;
			}
			nStartingYear --;			
		}	
		bShow=true;
	}

	function selectYear(nYear) {
		yearSelected=parseInt(nYear+nStartingYear);
		yearConstructed=false;
		constructCalendar();
		popDownYear();
	}

	function constructYear() {
		popDownMonth();
		sHTML =	"";
		if (!yearConstructed) {

			sHTML =	"<tr><td align='center'	onmouseover='this.style.backgroundColor=\""+yearDropDownHoverColor+"\"' onmouseout='clearInterval(intervalID1);this.style.backgroundColor=\"\"' style='cursor:pointer'	onmousedown='clearInterval(intervalID1);intervalID1=setInterval(\"decYear()\",30)' onmouseup='clearInterval(intervalID1)'>-</td></tr>";

			j =	0;
			//nStartingYear =	yearSelected-3;
			nStartingYear = yearSelected;
			for	(i=(nStartingYear); i<=(yearSelected+6); i++) {
				sName =	i;
				if (i==yearSelected){
					sName =	"<B>" +	sName +	"</B>";
				}

				sHTML += "<tr><td id='y" + j + "' onmouseover='this.style.backgroundColor=\""+yearDropDownHoverColor+"\"' onmouseout='this.style.backgroundColor=\"\"' style='cursor:pointer' onclick='selectYear("+j+");event.cancelBubble=true'>" + sName + "</td></tr>";
				j ++;
			}

			sHTML += "<tr><td align='center' onmouseover='this.style.backgroundColor=\""+yearDropDownHoverColor+"\"' onmouseout='clearInterval(intervalID2);this.style.backgroundColor=\"\"' style='cursor:pointer' onmousedown='clearInterval(intervalID2);intervalID2=setInterval(\"incYear()\",30)'	onmouseup='clearInterval(intervalID2)'>+</td></tr>";

			document.getElementById("selectYear").innerHTML	= "<table width=44 style='"+yearDropDownStyle+"' bgcolor='"+yearDropDownBgColor+"' onmouseover='clearTimeout(timeoutID2)' onmouseout='clearTimeout(timeoutID2);timeoutID2=setTimeout(\"popDownYear()\",100)' cellspacing=0>"	+ sHTML	+ "</table>";

			yearConstructed	= true;
		}
	}

	function popDownYear() {
		clearInterval(intervalID1);
		clearTimeout(timeoutID1);
		clearInterval(intervalID2);
		clearTimeout(timeoutID2);
		crossYearObj.visibility= "hidden";
	}

	function popUpYear() {
		var	leftOffset;

		constructYear();
		crossYearObj.visibility	= (dom||ie)? "visible" : "show";
		leftOffset = parseInt(crossobj.left) + document.getElementById("spanYear").offsetLeft + yearDropDownX;		

		//if (ie) leftOffset += 6;
		
		crossYearObj.left =	leftOffset;
		crossYearObj.top = parseInt(crossobj.top) +	monthDropDownY;
	}

	/*** calendar ***/
   function WeekNbr(n) {
      // Algorithm used:
      // From Klaus Tondering's Calendar document (The Authority/Guru)
      // hhtp://www.tondering.dk/claus/calendar.html
      // a = (14-month) / 12
      // y = year + 4800 - a
      // m = month + 12a - 3
      // J = day + (153m + 2) / 5 + 365y + y / 4 - y / 100 + y / 400 - 32045
      // d4 = (J + 31741 - (J mod 7)) mod 146097 mod 36524 mod 1461
      // L = d4 / 1460
      // d1 = ((d4 - L) mod 365) + L
      // WeekNumber = d1 / 7 + 1

      year = n.getFullYear();
      month = n.getMonth() + 1;
      if (startAt == 0) {
         day = n.getDate() + 1;
      }
      else {
         day = n.getDate();
      }

      a = Math.floor((14-month) / 12);
      y = year + 4800 - a;
      m = month + 12 * a - 3;
      b = Math.floor(y/4) - Math.floor(y/100) + Math.floor(y/400);
      J = day + Math.floor((153 * m + 2) / 5) + 365 * y + b - 32045;
      d4 = (((J + 31741 - (J % 7)) % 146097) % 36524) % 1461;
      L = Math.floor(d4 / 1460);
      d1 = ((d4 - L) % 365) + L;
      week = Math.floor(d1/7) + 1;

      return week;
   }

	function constructCalendar () {
		var aNumDays = Array (31,0,31,30,31,30,31,31,30,31,30,31);

		var dateMessage;
		var	startDate =	new	Date (yearSelected,monthSelected,1);
		var endDate;

		if (monthSelected==1)
		{
			endDate	= new Date (yearSelected,monthSelected+1,1);
			endDate	= new Date (endDate	- (24*60*60*1000));
			numDaysInMonth = endDate.getDate();
		}
		else
		{
			numDaysInMonth = aNumDays[monthSelected];
		}

		datePointer	= 0;
		dayPointer = startDate.getDay() - startAt;

		if (dayPointer<0)
		{
			dayPointer = 6;
		}

		sHTML =	"<table	cellspacing='1' cellpadding='1' border='0' style='font-family:verdana;font-size:10px;'><tr>";

		if (showWeekNumber==1)
		{
			//sHTML += "<td width=27><b>" + weekString + "</b></td><td width=1 rowspan=7 bgcolor='#d0d0d0' style='padding:0px'><img src='"+imgDir+"divider.gif' width=1></td>"; With image divider!
			sHTML += "<td width=27><b>" + weekString + "</b></td><td width=1 rowspan=7 bgcolor='#d0d0d0' style='padding:0px'><img src='"+imgDir+"empty.gif' width=1></td></td>";
		}

		for	(i=0; i<7; i++)	{
			sHTML += "<td width='27' align='right'><B>"+ dayName[i]+"</B></td>";
		}
		sHTML +="</tr><tr>";

		if (showWeekNumber==1)
		{
			sHTML += "<td align=right>" + WeekNbr(startDate) + "&nbsp;</td>";
		}

		for	( var i=1; i<=dayPointer;i++ )
		{
			sHTML += "<td>&nbsp;</td>";
		}

		for	( datePointer=1; datePointer<=numDaysInMonth; datePointer++ )
		{
			dayPointer++;
			sHTML += "<td align=right>";
			sStyle=styleAnchor;
			if ((datePointer==odateSelected) &&	(monthSelected==omonthSelected)	&& (yearSelected==oyearSelected))
			{ sStyle+=styleLightBorder; }

			sHint = "";
			for (k=0;k<HolidaysCounter;k++)
			{
				if ((parseInt(Holidays[k].d)==datePointer)&&(parseInt(Holidays[k].m)==(monthSelected+1)))
				{
					if ((parseInt(Holidays[k].y)==0)||((parseInt(Holidays[k].y)==yearSelected)&&(parseInt(Holidays[k].y)!=0)))
					{
						sStyle+="background-color:#FFDDDD;";
						sHint+=sHint==""?Holidays[k].desc:"\n"+Holidays[k].desc;
					}
				}
			}

			var regexp= /\"/g;
			sHint=sHint.replace(regexp,"&quot;");

			dateMessage = "onmousemove='window.status=\""+selectDateMessage.replace("[date]",constructDate(datePointer,monthSelected,yearSelected))+"\"' onmouseout='window.status=\"\"' ";

			if ((yearSelected==yearNow)&&(monthSelected==monthNow)&&(datePointer==dateNow))
			{ sHTML += "<b><a "+dateMessage+" title=\"" + sHint + "\" style='"+sStyle+"' href='javascript:dateSelected="+datePointer+";closeCalendar();'><font color=#BB0000>&nbsp;" + datePointer + "</font>&nbsp;</a></b>";}
			else if ((yearSelected==yearNow) && (monthSelected==monthNow) && datePointer<dateNow) {								
			 	sHTML += "<span "+dateMessage+" title=\"" + sHint + "\" style='"+sStyle+"'>&nbsp;<font color=#CCCCCC>" + datePointer + "</font>&nbsp;</span>"; 			 	
			}
			else if	((dayPointer % 7 == (startAt * -1)+1))
			{ sHTML += "<a "+dateMessage+" title=\"" + sHint + "\" style='"+sStyle+"' href='javascript:dateSelected="+datePointer + ";closeCalendar();'>&nbsp;<font color=#9D4947>" + datePointer + "</font>&nbsp;</a>"; }
			else
			{ sHTML += "<a "+dateMessage+" title=\"" + sHint + "\" style='"+sStyle+"' href='javascript:dateSelected="+datePointer + ";closeCalendar();'>&nbsp;" + datePointer + "&nbsp;</a>"; }

			sHTML += "";
			if ((dayPointer+startAt) % 7 == startAt) {
				sHTML += "</tr><tr>";
				if ((showWeekNumber==1)&&(datePointer<numDaysInMonth))
				{
					sHTML += "<td align=right>" + (WeekNbr(new Date(yearSelected,monthSelected,datePointer+1))) + "&nbsp;</td>";
				}
			}
		}

		document.getElementById("content").innerHTML   = sHTML;
		var styleBg="background-image: url("+imgDir+dropImgBg+");background-repeat: repeat-x; height:19px; width:8";
		var tmpMonthTableStart="<table cellpadding='0' cellspacing='0' width='100%' border='0'><tr valign='middle'><td width='2'><img id='month_drop_l_border_id' src='"+imgDir+dropLeftBorderImgBg+"' width='2' height='19'></td><td id='month_patch_id' style='"+styleBg+"'><img src='"+imgDir+"empty.gif' width='8' height='19' border='0'></td><td nowrap='nowrap' id='month_text_bg_id' style=\"background-image: url('"+imgDir+dropImgBg+"');background-repeat: repeat-x; height:19px;\">";
		var tmpYearTableStart="<table cellpadding='0' cellspacing='0' width='100%' border='0'><tr valign='middle'><td width='2'><img id='year_drop_l_border_id' src='"+imgDir+dropLeftBorderImgBg+"' width='2' height='19'></td><td id='year_patch_id' style='"+styleBg+"'><img src='"+imgDir+"empty.gif' width='8' height='19' border='0'></td><td nowrap='nowrap' id='year_text_bg_id' style=\"background-image: url('"+imgDir+dropImgBg+"');background-repeat: repeat-x; height:19px;\">";

		document.getElementById("spanMonth").innerHTML = tmpMonthTableStart + "<font style='"+topBannerFont+"'>"+monthName[monthSelected]+"</font></td><td id='month_arrow_bg_id' nowrap='nowrap' style=\"background-image: url('"+imgDir+dropImgBg+"');background-repeat: repeat-x; height:19px;\"><img id='changeMonth' src='"+imgDir+dropArrowImg+"' width='"+dropArrowImgWidth+"' height='"+dropArrowImgHeight+"' border='0'></td><td width='2'><img id='month_drop_r_border_id' src='"+imgDir+dropRightBorderImgBg+"' border='0' width='2' heght='19'></td></tr></table>";

		document.getElementById("spanYear").innerHTML =	tmpYearTableStart + "<font style='"+topBannerFont+"'>" + yearSelected + "</font></td><td id='year_arrow_bg_id' nowrap='nowrap' style=\"background-image: url('"+imgDir+dropImgBg+"');background-repeat: repeat-x; height:19px;\"><img id='changeYear' src='"+imgDir+dropArrowImg+"' width='"+dropArrowImgWidth+"' height='"+dropArrowImgHeight+"' border='0'></td><td width='2'><img id='year_drop_r_border_id' src='"+imgDir+dropRightBorderImgBg+"' border='0' width='2' heght='19'></td></tr></table>";
		
		if (allowDecreaseMonth()) setNormalAlphaCursor(document.getElementById('spanLeft'));
		else setDisabledAlphaCursor(document.getElementById('spanLeft'));
	}

	function popUpCalendar(ctl,	ctl2, ctl3, format,  serverTime) {
				
		today.setTime(serverTime);
		dateNow	 = today.getDate();      
		monthNow = today.getMonth();     
		yearNow	 = today.getFullYear();  
		hourNow  = today.getHours();     
		minuteNow = today.getMinutes();  
			 	
		var	leftpos=0;
		var	toppos=0;

		if (bPageLoaded){

			if ( crossobj.visibility ==	"hidden" ) {

				ctlToPlaceValue	= ctl2;
				ctlToPlaceValue1 = ctl3;
				dateFormat=format;

				var formatChar = " ";
				var aFormat	= dateFormat.split(formatChar);
				if (aFormat.length<3)
				{
					formatChar = "/";
					aFormat	= dateFormat.split(formatChar);
					if (aFormat.length<3)
					{
						formatChar = ".";
						aFormat	= dateFormat.split(formatChar);
						if (aFormat.length<3)
						{
							formatChar = "-";
							aFormat	= dateFormat.split(formatChar);
							if (aFormat.length<3){								
								formatChar="";
							}
						}
					}
				}

				var tokensChanged =	0;
				if ( formatChar	!= "" )
				{
					// use user's date
					var aData =	ctl2.value.split(formatChar);

					for	(i=0;i<3;i++)
					{
						if ((aFormat[i]=="d") || (aFormat[i]=="dd"))
						{
							dateSelected = parseInt(aData[i], 10);
							tokensChanged ++;
						}
						else if	((aFormat[i]=="m") || (aFormat[i]=="mm"))
						{
							monthSelected =	parseInt(aData[i], 10) - 1;
							tokensChanged ++;
						}
						else if	(aFormat[i]=="yyyy")
						{
							yearSelected = parseInt(aData[i], 10);
							tokensChanged ++;
						}
						else if	(aFormat[i]=="mmm")
						{
							for	(j=0; j<12;	j++)
							{
								if (aData[i]==monthName[j])
								{
									monthSelected=j;
									tokensChanged ++;
								}
							}
						}
						else if	(aFormat[i]=="mmmm")
						{
							for	(j=0; j<12;	j++)
							{
								if (aData[i]==monthName2[j])
								{
									monthSelected=j;
									tokensChanged ++;
								}
							}
						}
					}
				}

				if ((tokensChanged!=3)||isNaN(dateSelected)||isNaN(monthSelected)||isNaN(yearSelected))
				{
					dateSelected = dateNow;
					monthSelected =	monthNow;
					yearSelected = yearNow;
				}

				odateSelected=dateSelected;
				omonthSelected=monthSelected;
				oyearSelected=yearSelected;

				var aTag = ctl;
				do {
					aTag = aTag.offsetParent;
					leftpos	+= aTag.offsetLeft;
					toppos += aTag.offsetTop;
				} while(aTag.tagName!="BODY");

				leftpos += globalLeftOffset;
				toppos += (ie) ? globalTopOffset : 0;
				crossobj.left =	fixedX==-1 ? ctl.offsetLeft	+ leftpos :	fixedX;
				crossobj.top = fixedY==-1 ?	ctl.offsetTop +	toppos + ctl.offsetHeight +	2 :	fixedY;
				constructCalendar (1, monthSelected, yearSelected);
				crossobj.visibility=(dom||ie)? "visible" : "show";

				hideElement( 'SELECT', document.getElementById("calendar") );
				hideElement( 'APPLET', document.getElementById("calendar") );

				bShow = true;
				if (showHour == 1) realCalendarTime();
			}
			else
			{	
				stopRealCalendarTime();
				hideCalendar();
				if (ctlNow!=ctl) {popUpCalendar(ctl, ctl2, ctl3, format);}
			}
			ctlNow = ctl;
		}
		calendarShown = true;	
	}

	function getCurrentTime(showHour) {	
		if (showHour == 1) realCalendarTime();
	}

	function hidecal1(e) {
		if (e.keyCode == 27) {
			stopRealCalendarTime();
			hideCalendar();	
		}	
	}

	document.onclick = function hidecal2 () {
		if (!bShow) {
			stopRealCalendarTime();
			hideCalendar();		
		}	
		bShow = false;		
	};	

	
// Move Calendar //
function move(e){
	if (dragapproved){
		if(document.all) {
			e = event;			
			z.style.pixelLeft=tx+e.clientX-mouse_x;
			z.style.pixelTop=ty+e.clientY-mouse_y;		
		} else {			
			z.style.left=tx+e.clientX-mouse_x;
			z.style.top=ty+e.clientY-mouse_y;			
		}
		
		return false;
	}
}
function drags(e){ 	
	var topelement = ie ? "BODY": "HTML";
 	
 	if (monthConstructed) popDownMonth(); // if drop-down month is shown
 	if (yearConstructed) popDownYear();	  // if drop-down year is shown
 	
 	dragapproved=true;
 	z=document.getElementById('calendar');	
 	
	if(document.all) {
		e = event;
		tx=parseFloat(z.style.pixelLeft);
		ty=parseFloat(z.style.pixelTop);
	} else {
		tx=parseFloat(z.style.left);
		ty=parseFloat(z.style.top);
	}
	
	mouse_x=e.clientX;
	mouse_y=e.clientY;
}
// End Move Calendar //

// Alpha //
function setAlpha(obj, currentAlpha){
	obj.style.opacity=currentAlpha;
	if (!ns4) obj.style.filter ="alpha(opacity="+currentAlpha+")";	
	else obj.style.MozOpacity="0."+currentAlpha;
}
function rollBackAlpha(obj) {
	obj.style.opacity=100;
	if (!ns4) obj.style.filter ="alpha(opacity=100)";	
	else obj.style.MozOpacity=1;
}
// End Alpha //

// real time//													
 function stopRealCalendarTime() {
	 clearTimeout(tickCalendar);
 }   	
 function realCalendarTime(){
	var ut=new Date();
	var h,m,s;
	var time="";
	h=ut.getHours();
	m=ut.getMinutes();
	s=ut.getSeconds();
	if(s<=9) s="0"+s;
	if(m<=9) m="0"+m;
	if(h<=9) h="0"+h;
	time+=h;
	if (showMinutes == 1) time+=":"+m;
	if (showSeconds == 1) time+=":"+s;	
	document.getElementById("lblTodayHour").innerHTML=time + "ч.";	
	tickCalendar=setTimeout("realCalendarTime()",1000);    
}
// End real time //	
