﻿var zIndex = 100;
var __calendars = {};

function initCalendar(id, inputElementName){
	var calendar = new YAHOO.widget.Calendar(id, id, { title:"Pasirinkite datą:", close:true });
	calendar.cfg.setProperty('START_WEEKDAY', 1);
	calendar.cfg.setProperty('LOCALE_WEEKDAYS', "short");	
	calendar.cfg.setProperty('LOCALE_MONTHS', "long");	
	calendar.cfg.setProperty('WEEKDAYS_SHORT', ["S", "P", "A", "T", "K", "Pe", "Š"]);
	calendar.cfg.setProperty(
		'MONTHS_LONG', 
		[
			"Sausis", "Vasaris", "Kovas", "Balandis", "Gegužė", "Birželis", 
			"Liepa", "Rugpjūtis", "Rugsėjis", "Spalis", "Lapkritis", "Gruodis"
		]
	);
	calendar.inputElement = inputElementName;
	calendar.render();
	calendar.hide();
	calendar.selectEvent.subscribe(onSelectDate, calendar, false);
	return calendar;
}

function initCalendarSpecial(id, inputElementName, validWeekDay){	
	var calendar = initCalendar(id, inputElementName);
	calendar.cfg.setProperty('SHOW_WEEK_HEADER', true);
	calendar.__validWeekDay = validWeekDay;		
	calendar.isDateOOM = function(date){
		return date.getDay() != this.__validWeekDay;
	};
	calendar.render();
	return calendar;
}

function onSelectDate(type, args, calendar){
	var dates = args[0];  
	var date = dates[0]; 
	var year = date[0], month = date[1], day = date[2]; 

	calendar.inputElement.value = year + "-" + (month < 10 ? '0' : '') + month + "-" + (day < 10 ? '0' : '') +day;
	calendar.hide(true);
}

function showCalendar(name, event, inputElement){
	var calendar = null;
	if (!__calendars[name]) {
		document.body.className += " yui-skin-sam";
		var container = document.body.appendChild(document.createElement("DIV"));
		__calendars[name] = initCalendarSpecial(container, inputElement);
	}
	calendar = __calendars[name];	
	var target = event.target ? event.target : event.srcElement;			
	updateCalendarSelect(calendar, inputElement);	
	calendar.show(true);
	calendar.oDomContainer.style.position = "absolute";	
	YAHOO.util.Dom.setXY(calendar.oDomContainer, YAHOO.util.Dom.getXY(target));
	calendar.oDomContainer.style.zIndex = zIndex++;
}

function updateCalendarSelect(calendar, inputElement){	
	if(inputElement.value.length !== 10){
		return null;
	}
	var year = inputElement.value.substr(0,4);
	var month = inputElement.value.substr(5,2);
	var day = inputElement.value.substr(8,2);
	calendar.cfg.setProperty("pagedate", month + "/" + year);
	calendar.select(month + "/" + day + "/" + year);	
	calendar.render();
}
