//====================== JavaScript Document ======================//

function fGetDaysInMonth( iMonth, iYear ){
	var dPrevDate = new Date(iYear, iMonth, 0);
	return dPrevDate.getDate();
}

function fBuildCal( iYear, iMonth ){

	var aMonth = new Array();
	aMonth[0] = new Array(7); aMonth[1] = new Array(7); aMonth[2] = new Array(7); aMonth[3] = new Array(7); aMonth[4] = new Array(7); aMonth[5] = new Array(7); aMonth[6] = new Array(7);
	var dCalDate = new Date(iYear, iMonth-1, 1);
	var iDayOfFirst = dCalDate.getDay(); iDayOfFirst=(iDayOfFirst ? iDayOfFirst-1 : 6);
	var iDaysInMonth = fGetDaysInMonth(iMonth, iYear);
	var iVarDate = 1;
	aMonth[0]=calendarDays;
	for(var d=iDayOfFirst;d<7;++d){
		aMonth[1][d] = iVarDate
		iVarDate++;
	}
	for(var w=2;w<7;++w) for(var d=0;d<7;++d) if(iVarDate <= iDaysInMonth){
		aMonth[w][d]=iVarDate;
		iVarDate++;
	}
	return aMonth;
}

var locator=window.location.pathname;
function fDrawCal( iYear, iMonth ){	if( !document.getElementById('tbSelYear') || !document.getElementById('tbSelMonth') || !document.getElementById('datepicker') ) return false;

	var myMonth;
	myMonth = fBuildCal(iYear, iMonth);
	var inner='<table><thead><tr>'; for(var d=0;d<7;++d) inner+='<th'+(d>4?' class="we"':'')+'>'+myMonth[0][d]+'</th>'; inner+='</tr></thead><tbody>';
	locator+='?'; if(window.location.search){
		var ts=window.location.search.split('?'); ts=ts[1].split('&');
		for(var i=0;i<ts.length;++i){
			var t=ts[i].split('='); if(t[0]!='day'){
				if(is_afisha && t[0]=='profile') continue;
				locator+=ts[i]+'&';
			}
		}
	}
	if(is_afisha)locator+='profile=filtered&';
	var yy=document.getElementById('tbSelYear').value; if(yy.length<4) yy='20'+yy;
	var mm=document.getElementById('tbSelMonth').value; if(mm.length<2) mm='0'+mm;
	for(var w=1;w<7;w++){
		if(w<6 || (w==6 && !isNaN(myMonth[w][0]))){
			inner+='<tr>';
			for(var d=0;d<7;++d){
				inner+='<td'+((d==5||d==6)?' class="we"':'')+'>';
				if (!isNaN(myMonth[w][d])){
					var dd=myMonth[w][d]; if(dd<10) dd='0'+dd;
					inner+=((in_array(myMonth[w][d],calendarArrayDays))?'<a href="'+locator+'day='+yy+'-'+mm+'-'+dd+'">':'')+(myMonth[w][d])+((in_array(myMonth[w][d],calendarArrayDays))?'</a>':'');
				}
				inner+='</td>';
			}
			inner+='</tr>';
		}
	}
	inner+='</tbody></table>';
	document.getElementById('datepicker').innerHTML=inner;
}

function in_array( what, where ){
	for(var i=0;i<where.length;++i) if(what == where[i]) return true;
  return false;
}

//====================== ajax ======================//

var calendarArrayDays = new Array(), is_afisha=false;
function ajaxCalendar(){	if( !document.getElementById('tbSelYear') || !document.getElementById('tbSelMonth') ) return false;

	var dCurYear=false, dCurMonth=false;
	if(document.getElementById('tbSelMonth') && document.getElementById('tbSelMonth').value) dCurMonth=document.getElementById('tbSelMonth').value;
	if(document.getElementById('tbSelYear')  && document.getElementById('tbSelYear').value)  dCurYear=document.getElementById('tbSelYear').value;
	if(window.location.search){
		var ts=window.location.search.split('?'); ts=ts[0].split('&').concat(ts[1].split('&'));
		for(var i=0;i<ts.length;++i) if(ts[i]){
			var t=ts[i].split('='); if(t[0]=='day'){
				t=t[1].split('-');
				if(!dCurYear) if(t[0]) dCurYear=t[0];
				if(!dCurMonth)if(t[1]) dCurMonth=t[1];
				break;
			}
		}
	}
	today=new Date(); if(!dCurYear) dCurYear=today.getFullYear(); if(!dCurMonth) dCurMonth=today.getMonth()+1;
	var req = new JsHttpRequest();
	req.onreadystatechange = function(){
		if(req.readyState==4){	//alert(req.responseText);

			if(!req.responseJS || !req.responseJS.year || !req.responseJS.month || !req.responseJS.year.length || !req.responseJS.month.length){
				if(document.getElementById('calendarBaseDiv'))document.getElementById('calendarBaseDiv').style.display='none';
			}else{
				locator=req.responseJS.locator;
				if(document.getElementById('calendarBaseDiv'))document.getElementById('calendarBaseDiv').style.display='';
				var tbSelMonth=document.getElementById('tbSelMonth'); tbSelMonth.options.length=0;
				for(var i in req.responseJS.month){
					tbSelMonth.options[tbSelMonth.options.length]=new Option( calendarMonth[req.responseJS.month[i]-1], req.responseJS.month[i], false, (req.responseJS.month[i]==req.responseJS.month_q) );
				}
				var tbSelYear=document.getElementById('tbSelYear'); tbSelYear.options.length=0;
				for(var i in req.responseJS.year){
					tbSelYear.options[tbSelYear.options.length]=new Option( req.responseJS.year[i], req.responseJS.year[i], false, (req.responseJS.year[i]==req.responseJS.year_q) );
				}
				calendarArrayDays=new Array(); calendarArrayDays=req.responseJS.day;
				is_afisha=(req.responseJS.o_key_so=='afisha');
				fDrawCal(req.responseJS.year_q, req.responseJS.month_q)
			}
		}
	}
	req.open('GET', '/lib/calendar_get.php', true);
	req.send({
		year: dCurYear,
		month: dCurMonth,
		locator: window.location.pathname
	});

}
