var mName=new Array('January','February','March','April','May','June','July','August','September','October','November','December');
var dName=new Array('Mo','Tu','We','Th','Fr','Sa','Su');

var showCalendar = function(uin, analyz, type) {
	
	if($('calendar'))
	 $('calendar').destroy();
	
	var calendar= new Element('div', {'id':'calendar'}).inject($('shCalendar'));
	new Element('img', {'src':'/lib/im/calendar-top.png'}).inject(calendar);
	var bcalendar= new Element('div', {'class':'bodyCal'}).inject(calendar);
	var pre= new Element('div', {'id':'prevMonth', 'class':'prev', 'html':'«'}).inject(bcalendar);
	//new Element('img', {'src':'/lib/im/calendar-back.png'}).inject(pre);
	new Element('div', {'id':'monName', 'class':'mon'}).inject(bcalendar);
	var nex= new Element('div', {'id':'nextMonth', 'class':'next', 'html':'»'}).inject(bcalendar);
	//new Element('img', {'src':'/lib/im/calendar-next.png'}).inject(nex);
	new Element('div', {'class':'clear'}).inject(bcalendar);
	for(i=0; i<=6; i++)
		new Element('div', {'class':'dname', 'html':dName[i]}).inject(bcalendar);
	new Element('div', {'class':'clear'}).inject(bcalendar);
	new Element('div', {'id':'montdays'}).inject(bcalendar);
	new Element('div', {'id':'nights', 'class':'nights'}).inject(bcalendar);
	new Element('img', {'src':'/lib/im/calendar-bottom.png'}).inject(calendar);
	
	var pos=uin.getPosition();
	var size=uin.getSize();
	calendar.setStyles({
						position: 'absolute',
						display: '',
						top: pos.y+size.y+2+'px',
						left: pos.x+'px'
						});
	now=new Date();
	var date = uin.value;
	var dateArr=date.split('.');
	if(!dateArr[0] || dateArr[0]>31)
		dateArr[0]=now.getDate();
	if(!dateArr[1] || dateArr[1]>12)
		dateArr[1]=now.getMonth()+1;
	if(!dateArr[2] || dateArr[2]<2000 || dateArr[2]>now.getFullYear()+5)
		dateArr[2]=now.getFullYear();
	drawMonth(uin, dateArr[2]+'-'+addZero(dateArr[1])+'-'+addZero(dateArr[0]), analyz, type);
	};
var checkDrawMonth = function(startday, findate, type) {
		daylist=$$('.day');
		if($(startday))
			$(startday).setStyles({
						 'backgroundImage': 'url(/lib/im/flag.png)',
						 'backgroundPosition': 'right',
						 'backgroundRepeat': 'no-repeat'
						});
		if(startday && findate)
		for (i=0; i<daylist.length; i++)
				{
				if((type && daylist[i].id>=startday && daylist[i].id<=findate) || (!type && daylist[i].id<=startday && daylist[i].id>=findate)){
					daylist[i].addClass('select');
					daylist[i].removeClass('over'); }
				}
		if(daylist.length)
		daylist.addEvents({
					mouseover: function() {
						var selday=this.id;
						var count=0;
						var stDay=daylist[0].id;
						var lsDay=daylist[daylist.length-1].id;
						if(startday && startday<stDay && type) 
							count=getDaysBetween(convDate(startday, 'show'), convDate(stDay, 'show'));

						var sday=startday;
						var fday=selday;
						if(!type) {
							sday=selday;
							fday=startday; }
						for (i=0; i<daylist.length; i++)
							{
							if(daylist[i].id==selday) {
								daylist[i].addClass('over');
								daylist[i].removeClass('select'); }
							else if(startday && type && sday<fday && daylist[i].id>=sday && daylist[i].id<=fday){
								daylist[i].addClass('select');
								daylist[i].removeClass('over');
								count++; }
							else {
								daylist[i].removeClass('over');
								daylist[i].removeClass('select');
								}
							}
						if(count)
							$('nights').innerHTML=count+" nights";
						else
							$('nights').innerHTML=""; 
					}		
		});
};	
var drawMonth = function (uin, dat, analyz, type) {
	var arr=dat.split('-');
	var year=arr[0];
	var mon=arr[1]-1;
	$('monName').innerHTML=mName[mon]+' '+year;
	
	selDate=uin.value.split('.');
	sed=new Date(selDate[2], selDate[1] - 1, selDate[0], 0,0,0,0)
	newTD=$('montdays');
	newTD.empty();
	now=new Date();
	now.setHours(0);
	now.setMinutes(0);
	now.setSeconds(0);
	now.setMilliseconds(0);
	sd=now.getDate();
	td=new Date();
	td.setDate(1);
	td.setFullYear(year);
	td.setMonth(mon);
	fd=td.getDay();
	if (fd==0) fd=6; else fd--;
	md = new Date(year, mon + 1, 0).getDate();
	cd=0-fd;
	var draw=true;
	while(draw)
		{
	for(dw=1; dw<=7; dw++)
		{
		var dday=new Date(year, mon , 1+cd, 0 ,0,0,0);
		var day = new Element('div', {'class':'day','html': dday.getDate(), 'id':dday.getFullYear()+'-'+addZero(dday.getMonth()+1)+'-'+addZero(dday.getDate())}).inject(newTD);
		if(dday.getDate()==sed.getDate() && dday.getFullYear()==sed.getFullYear() && dday.getMonth()==sed.getMonth())
			day.addClass('selected');
		if(dday.getDate()==now.getDate() && dday.getFullYear()==now.getFullYear() && dday.getMonth()==now.getMonth())
			day.addClass('today');
		if(dday<now) {
			day.removeClass('day'); day.addClass('yesterday'); }
		if(dday.getMonth()!=mon)
			day.addClass('other');
		if(cd>0 && new Date(dday.getFullYear(), dday.getMonth() , dday.getDate()+1).getMonth()!=new Date(year, mon , 1).getMonth())
			draw=false;	
		cd++;
		}
		new Element('div', {'class':'clear'}).inject(newTD);
		}
	var nextMon=$('nextMonth');
	nextMon.removeEvents('click');
	nextMon.addEvent('click', function() { 
		var nm=new Date(td.getFullYear(), td.getMonth()+1 , 1);
		drawMonth(uin, nm.getFullYear()+'-'+addZero(nm.getMonth()+1), analyz, type);
		});
	var prevMon=$('prevMonth');
	prevMon.removeEvents('click');
	prevMon.addEvent('click', function() { 
		var nm=new Date(td.getFullYear(), td.getMonth()-1 , 1);
		drawMonth(uin, nm.getFullYear()+'-'+addZero(nm.getMonth()+1), analyz, type);
		});
	
	var anDate='';
	if(analyz && $(analyz).value) 
		anDate=convDate($(analyz).value, 'sql');
	var daylist=$$('.day');
	if(daylist.length)
		daylist.addEvent('click', function() { 
			uin.value=convDate(this.id, 'show');
			uin.focus();
			$('calendar').destroy();
		});
	checkDrawMonth(anDate, dat, type); 
	};
var addZero = function(str) {
	if (str<10)
		str="0"+str.toInt(); 
	return (str);
	};
var getDaysBetween = function (from , to ) {
	if(from=="") {
		var from = new Date();
		var from = new Date(from.getFullYear(), from.getMonth()+1, from.getDate()); }
	else {
		var arr = from.split('.');
		var from = new Date(arr[2],arr[1]-1, arr[0]); }
	var arr = to.split('.');
	var to = new Date(arr[2],arr[1]-1, arr[0]);
	var result=(to.getTime() - from.getTime())/(1000 * 60 * 60 * 24);

	return (result.toInt());
};
var convDate = function (date, type){
	if(type=='show') {
		var arr=date.split('-');
	 	var ret=addZero(arr[2]) + "." + addZero(arr[1]) + "." + arr[0]; }
	else if(type=='sql') {
		var arr=date.split('.');
	 	var ret=arr[2] + "-" + addZero(arr[1]) + "-" + addZero(arr[0]); }
	else if(type=='int') {
		var arr=date.split('-');
	 	var ret=arr[0]  + arr[1]  + arr[2];
		var arr=ret.split('.');
		var ret=arr[2]  + arr[1]  + arr[0]; }
	return  (ret);
}
function checkClick(e) {
	
	e?evt=e:evt=event;
	CSE=evt.target?evt.target:evt.srcElement;
	if($('calendar')) 
		if (!isChild(CSE,$('calendar')))
			$('calendar').destroy();
}
function isChild(s,d) {
	while(s) {
		if (s==d) 
			return true;
		s=s.parentNode;
	}
	return false;
}
