/***** CALENDAR *****/
//from: calendar.js
var week_days = new Array(1, 1, 1, 1, 1, 1, 1);
var days = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
//var next_mon_text = "&gt;&gt;";
//var prev_mon_text = "&lt;&lt;";
var next_mon_text = ">>";
var prev_mon_text = "<<";
var dt_format = "d.m.Y";
var date_ctrl = null;
var curr_date = null;
var from_date = null;
var till_date = null;
var draw_date = null;
var calendar;
var calActiveTarget = "";

// Get current date from specified calendar-field
function incDate(_source,days) {
	var curr_date = parseDate(_source);
	var newdate = new Date(curr_date.getFullYear(),curr_date.getMonth(),curr_date.getDate()+days);
	return formatDate(newdate.getFullYear(),newdate.getMonth(),newdate.getDate());
}

function incDate2(_source,days) {
	var curr_date=parseDate(_source);
	var newdate = new Date(curr_date.getFullYear(),curr_date.getMonth(),curr_date.getDate()+days);
	return formatDate(newdate.getFullYear(),newdate.getMonth(),newdate.getDate());
}

function isObject(a) { return (a && typeof a == 'object'); }
function isLeap(year) { return (year % 4 == 0); }

function parseDate(str) {
	if (!str)
		return null;
	var chr = '';
	var year = '';
	var mon = '';
	var mday = '';
	var idx = 0;
	for (var i = 0; i < dt_format.length; i++) {
		chr = dt_format.charAt(i);
		switch (chr) {
			case "m":
				mon = str.substr((idx), 2);
				idx +=   2;
			break;
			case "Y":
				year = ((year = Number(str.substr(idx, 4)))<100?year+2000:year);
				idx +=   4;
			break;
			case "y":
				year = "20" + str.substr(idx, 2);
				idx +=   2;
			break;
			case "d":
				mday = str.substr(idx, 2);
				idx +=   2;
			break;
			default:
				idx +=   1;
			break;
		}
	}
	return (new Date(year, mon-1, mday));
}

function formatDate(year, month, day) {
	var chr='';
	var ret='';
	for (var i=0; i < dt_format.length; i++) {
		chr=dt_format.charAt(i)
		switch (chr) {
			case "m":
				month++;
				ret += (month < 10 ? "0"+month : month);
			break;
			case "Y":
				ret += year;
			break;
			case "y":
				ret += (new String(year)).substr(2);
			break;
			case "d":
				ret += (day < 10 ? "0"+day : day);
			break;
			default:
				ret += chr;
		}
	}
	return ret;
}

function calendarShow(_curr_date, _target, _direction, _from_date, _till_date) {
	direction = _direction;
	if(direction == 'go') {
		calendar = "#calendar_div";
		calActivePopup = "p3popuptable";
		if(document.startdatepopup.visible) {
			document.startdatepopup.hide();
			return;
		}
	}

	if(direction=='back') {
		calendar = "#calendar_div2";
		calActivePopup = "p4popuptable";
		if(document.enddatepopup.visible) {
			document.enddatepopup.hide();
			return;
		}
	}

	if(!calendar)
		return;
	if(_from_date == null) {
		var offsetedDate = new Date();
		offsetedDate.setDate(offsetedDate.getDate());
		_from_date='0'+offsetedDate.getDate()+'0'+(offsetedDate.getYear()-100)+'0'+(offsetedDate.getMonth()+1);
	}
	date_ctrl=document.getElementById(_target);
	from_date = _from_date;
	till_date = _till_date;
	curr_date = parseDate(_curr_date);
	if (!curr_date)
		curr_date=new Date();

	if(curr_date < parseDate($('#calInput1').val()))
		curr_date = parseDate($('#calInput1').val());

	from_date = parseDate(from_date);
	till_date = parseDate(till_date);
	setCalendar();
}

function setCalendar(year, month) {
	var mtable;
	var chmonth = year == null ? false : true;
	if(!calendar)
		return;
	if (year == null)
		year = curr_date.getFullYear();
	if (month == null)
		month=curr_date.getMonth();

	days[1]=(isLeap(year) ? 29 : 28);
	draw_date = new Date(year, month, 1);

	getMonthHTML('first');
	getMonthHTML('second');


	if(!isFromDeeplink) {
		if(chmonth) {
			if(direction == 'go')
			{
                          document.startdatepopup.fixframe();
			//	document.startdatepopup.show('depCalWrapper');
			}
			if(direction == 'back')
			{
                          document.enddatepopup.fixframe();
                         }

			//	document.enddatepopup.show('retCalWrapper');
		}
		else {
			if(direction == 'go')
				document.startdatepopup.toggle('');
			if(direction == 'back')
				document.enddatepopup.toggle('');
		}
	}
}

function getMonthHTML(number) {
	var year = draw_date.getFullYear();
	var month = draw_date.getMonth();
	var day = 1;
	var d = draw_date.getDay()-1;
	if (d == -1)
		d = 6;
	var active = 0;
	var tmp = '';
	var bgr = '';

	wdays = '';
	for(var i =0; i<=6; i++)
		wdays += '<th class="calweekdaycell color2bob">'+week_days_text[i]+'</th>';

	result = "";
	tmp = ""
	for (var i=0; i < 7 && day <= days[month]; i++) {
		for (var j=0; j < 7; j++) {
			if ((i == 0 && j < d) || (day > days[month]))
				tmp += getDayHTML(year, month, 0, 'oom calcell', 0);
			else {
				active=1;
				if (!week_days[(j == 6) ? 0 : j+1])
					active=0;
				else { }
				if (active)
					bgr=(j == 6 ? 'calcell color9bg' : 'calcell color9bg');
				else
					bgr='calcell';
				tmp += getDayHTML(year, month, day, bgr, active);
				draw_date.setDate(++day);
			}
		}
		result += '<tr align="center">'+tmp+'</tr>';
		tmp='';
	}

	if(number == 'first') {
		$("#"+calActivePopup+" .calnavleft").attr({ alt: prev_mon_text });
		$("#"+calActivePopup+" .cal1up .calheader").html(months[month] + '&nbsp;' + year);
		$("#"+calActivePopup+" .cal1up .weekDaysRow").html(wdays);
		$("#"+calActivePopup+" .cal1up .dateRow").html(result);
	}
	if(number == 'second') {
		$("#"+calActivePopup+" .calnavright").attr({ alt: next_mon_text });
		$("#"+calActivePopup+" .cal2up .calheader").html(months[month]+'&nbsp;'+year);
		$("#"+calActivePopup+" .cal2up .weekDaysRow").html(wdays);
		$("#"+calActivePopup+" .cal2up .dateRow").html(result);
	}
}

function getDayHTML(year, month, day, classname, active) {
	var events='';
	var value='&nbsp;'
	var d=new Date(year,month,day);
	var today=new Date();
	if(d<today)
		active=0;
	if(direction=='back') {
		var hin=parseDate(document.getElementById('calInput1').value);
		if(d<=hin)
			active=0;
	}
  
	if (day) {
		if ((curr_date.getDate() == day) && (curr_date.getMonth() == month) && (curr_date.getFullYear() == year))
			classname='calcell color11bg color2';
		else
			classname='calcell color9bg color2';

		if (active)
			events=' onmouseover="this.className=\'calcellover color2bg color9\'" onmouseout="this.className=\''+classname+'\'" onclick="insertDate('+year+', '+month+', '+day+')"';
		else if(classname != 'calendar_mark')
			classname='calcell color10';
		value=day;
	}
	return '<td class="'+classname+'" '+events+'>'+value+'</td>';
}

function changeMonth(direction) {
	var month=draw_date.getMonth()-2;
	var year=draw_date.getFullYear()
	if (direction) {
		if (++month > 11) {
			month=(month+1)%12;
			year++;
		}
	}
	else {
		if (--month == -1) {
			month=11;
			year--;
		}
	}
	setCalendar(year, month);
}

function insertDate(year, month, day) {
	if(day<10)
	day='0'+(day);
	if((month+1)<10)
		month='0'+(month+1);
	else
		month=month+1;
	date_ctrl.value=day+'.'+month+'.'+year;
	{ 
		if(direction == 'go') {
			document.startdatepopup.hide('depCalWrapper');
			document.getElementById('calInput2').value=incDate2(day+'.'+month+'.'+year,20);
		}
		if(direction == 'back')
			document.enddatepopup.hide('retCalWrapper');
	}
}