﻿// Title: Timestamp picker
// Description: See the demo at url
// URL: http://us.geocities.com/tspicker/
// Script featured on: http://javascriptkit.com/script/script2/timestamp.shtml
// Version: 1.0
// Date: 12-05-2001 (mm-dd-yyyy)
// Author: Denis Gritcyuk <denis@softcomplex.com>; <tspicker@yahoo.com>
// Notes: Permission given to use this script in any kind of applications if
//    header lines are left unchanged. Feel free to contact the author
//    for feature requests and/or donations

function load_calendar(str_target, str_datetime) {
	var dayWidth = 25;
	var arr_months = new Array();
	//arr_months = ["January", "February", "March", "April", "May", "June",
	//	"July", "August", "September", "October", "November", "December"];
		arr_months = ["Sausis", "Vasaris", "Kovas", "Balandis", "Gegužė", "Birželis", 
		"Liepa", "Rugpjūtis", "Rugsėjis", "Spalis", "Lapkritis", "Gruodis"];
	var week_days = new Array(); 
	//week_days = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"];
	week_days = ["S", "Pr", "A", "T", "K", "P", "Š"];
	var n_weekstart = 1; // day week starts from (normally 0 or 1)

	var dt_datetime = (str_datetime == null || str_datetime =="" ?  new Date() : str2dt(str_datetime));
	
	var selectedYearss = dt_datetime.getFullYear();
	//alert('Pazymejau: '+selectedYearss);

	var dt_prev_month = new Date(dt_datetime);
	dt_prev_month.setDate(1);
	dt_prev_month.setMonth(dt_datetime.getMonth()-1);

	var dt_next_month = new Date(dt_datetime);
	dt_next_month.setDate(1);
	dt_next_month.setMonth(dt_datetime.getMonth()+1);
	var dt_firstday = new Date(dt_datetime);
	dt_firstday.setDate(1);

	dt_firstday.setDate(1-(7+dt_firstday.getDay()-n_weekstart)%7);
	var dt_lastday = new Date(dt_next_month);
	dt_lastday.setDate(0);
	
	var optionsStr = '';
	var selectedYear = dt_datetime.getFullYear();

	for (var i = 1950; i <= (new Date).getFullYear(); i++)
	{
		optionsStr += '<option value="'+i+'" '+(i == selectedYearss ? 'selected' : '')+'>'+i+'</option>\r\n';
	}

	// html generation (feel free to tune it for your particular application)
	// print calendar header
	var str_buffer = new String ();
		str_buffer = '<table border="0" cellspacing="0" cellpadding="0" width="' + dayWidth * 7 + '" style="position: absolute; left: 0px; top: 0px; background-color: #82C0F3;">'
		str_buffer += '	<tr>';
		str_buffer += '		<td align="center" style="background-color: #488EC7;">';
		str_buffer += '			<select id="lalala" name="lalala" onChange="parent.selectNewYear(\'' + str_target + '\', this.value); parent.showCalendar(\'' + str_target + '\');">' + optionsStr + '</select>';
		str_buffer += '		</td>';
		str_buffer += '	</tr>';

	var dt_current_day = new Date(dt_firstday);
	// print weekdays titles
	str_buffer += '<tr><td><table border="0" cellspacing="0" cellpadding="0" width="100%"><tr>';
	for (var n=0; n<7; n++) {
		str_buffer += '	<td align="center" width="' + dayWidth + '" style="background-color: #82C0F3; font-family: Verdana; font-size: 11px; font-weight: bold; color: #FFFFFF; padding: 2px 0px 2px 0px;">';
		str_buffer += week_days[(n_weekstart+n)%7] + '</td>';
	}
	// print calendar table
	str_buffer += '</tr></table></td></tr>';
	while (dt_current_day.getMonth() == dt_datetime.getMonth() || dt_current_day.getMonth() == dt_firstday.getMonth()) {
		// print row heder
		str_buffer += '<tr><td><table border="0" cellspacing="0" cellpadding="0" width="100%"><tr>';
		for (var n_current_wday=0; n_current_wday<7; n_current_wday++) {
				if (dt_current_day.getDate() == dt_datetime.getDate() && dt_current_day.getMonth() == dt_datetime.getMonth())
					// print current date
					str_buffer += '	<td align="center" width="' + dayWidth + '" style="background-color: #FF5454; padding: 2px 0px 2px 0px;">';
				else if (dt_current_day.getDay() == 0 || dt_current_day.getDay() == 6)
					// weekend days
					str_buffer += '	<td align="center" width="' + dayWidth + '" style="background-color: #EBB243; padding: 2px 0px 2px 0px;">';
				else
					// print working days of current month
					str_buffer += '	<td align="center" width="' + dayWidth + '" style="background-color: #FFFFFF; padding: 2px 0px 2px 0px;">';

				if (dt_current_day.getMonth() == dt_datetime.getMonth())
					// print days of current month
					str_buffer += '<a href="javascript:parent.setDateValue(\'' + str_target + '\', \'' + dt2dtstr(dt_current_day) + '\');" style="text-decoration:none;">' + '<font style="font-family: Verdana; font-size: 10px; font-weight: normal; color: #000000;">';
				else 
					// print days of other months
					str_buffer += '<a href="javascript:parent.setDateValue(\'' + str_target + '\', \'' + dt2dtstr(dt_current_day) + '\');" style="text-decoration:none;">' + '<font style="font-family: Verdana; font-size: 10px; font-weight: normal; color: #808080;">';
				str_buffer += dt_current_day.getDate() + '</font></a></td>';
				dt_current_day.setDate(dt_current_day.getDate()+1);
		}
		// print row footer
		str_buffer += '</tr></table></td></tr>';
	}
	str_buffer += '<tr><td><table border="0" cellspacing="0" cellpadding="0" width="100%"><tr>';
	str_buffer += '<td bgcolor="#82C0F3" style="background-color: #82C0F3; padding-left: 9px;"><a href="javascript:parent.show_calendar(\'' + str_target + '\',\'' + dt2dtstr(dt_prev_month) + '\');">'+
		'<img src="resources/img/arwprev.gif" width="16" height="16" border="0"'+
		' alt="Praeitas mėnesis"></a></td>';
	str_buffer += '<td colspan="5" align="center"><font style="font-family: Verdana; font-size: 12px; font-weight: bold; color: #000000;">' + arr_months[dt_datetime.getMonth()] + '</font></td>';
	str_buffer += '<td bgcolor="#82C0F3" align="right" style="background-color: #82C0F3; padding-right: 9px;"><a href="javascript:parent.show_calendar(\'' + str_target + '\',\'' + dt2dtstr(dt_next_month) + '\');">' + '<img src="resources/img/arwnext.gif" width="16" height="16" border="0"'+
		' alt="Kitas mėnesis"></a></td>';
	str_buffer += '</tr></table></td></tr>';
	str_buffer += '</table>';
	// print calendar footer
	

	return str_buffer;
}
function getValue(str_target, str_period)
{
	var oPeriod = document.getElementById(str_target + "_" + str_period);
	return oPeriod.options[oPeriod.selectedIndex].value;
}
function showCalendar(str_target)
{
	var str_datetime = getValue(str_target, "year") + "-" + getValue(str_target, "month") + "-" + getValue(str_target, "day");
	//alert('Suformavau: '+str_datetime);
	show_calendar(str_target, str_datetime);
}
function show_calendar(str_target, str_datetime)
{
	var str=load_calendar(str_target,str_datetime);
	var iCaldoc = iCal.document;
	
	
	iCaldoc.write(str);
	iCaldoc.close();


	el = document.getElementById(str_target + "_img");

	xPos = el.offsetLeft;
	tempEl = el.offsetParent;
	while (tempEl != null) {
		xPos += tempEl.offsetLeft;
		tempEl = tempEl.offsetParent;
	}

	yPos = el.offsetTop;
	tempEl = el.offsetParent;
	while (tempEl != null) {
		yPos += tempEl.offsetTop;
		tempEl = tempEl.offsetParent;
	}

	document.getElementById('iCal').style.top = yPos;
	document.getElementById('iCal').style.left = xPos + el.offsetWidth + 2;
	
}

function hide_calendar(){

	document.getElementById('iCal').style.left=-500
}

// datetime parsing and formatting routimes. modify them if you wish other datetime format
function str2dt (str_datetime) {
	var re_date = /^(\d\d\d\d)\-(\d\d)\-(\d\d)$/;
	if (!re_date.exec(str_datetime))
		return alert("Invalid Datetime format: "+ str_datetime);
	return (new Date (RegExp.$1, RegExp.$2-1, RegExp.$3));
}
function dt2dtstr (dt_datetime) {
	return (new String (
			dt_datetime.getFullYear()+"-"+pd02((dt_datetime.getMonth()+1))+"-"+pd02(dt_datetime.getDate())));
}
function setYears(dt_datetime,years)
{
	return (new String (
			dt_datetime.setYear(years)+"-"+pd02((dt_datetime.getMonth()))+"-"+pd02(dt_datetime.getDate())));
}
function dt2tmstr (dt_datetime) {
	return (new String (
			dt_datetime.getHours()+":"+dt_datetime.getMinutes()+":"+dt_datetime.getSeconds()));
}

function pd02(number){
	number = ""+number;

	if (number.length==0)
		return "00";
	else if (number.length==1)
		return "0" + number;
	else
		return number;
}
function setDateValue(str_target, str_datetime)
{
	if (str_target == 'filter')
		{
			parent.document.getElementById('datestart').value = str_datetime;
			}
	else
		{
			parent.document.getElementById('dateend').value = str_datetime;
			}
	parent.hide_calendar();
}

