var datedpDivID = "datepicker";
var dayArray = new Array('Pts.', 'Sa.', 'Çar.', 'Per.', 'Cu.', 'Cts.', 'Pz.');
var dayMedArray = new Array('Pazartesi', 'Salı', 'Çarşamba', 'Perşembe', 'Cuma', 'Cumartesi', 'Pazar');
var monthArray = new Array('Ocak', 'Şubat', 'Mart', 'Nisan', 'Mayıs', 'Haziran', 'Temmuz', 'Ağustos', 'Eylül', 'Ekim', 'Kasım', 'Aralık');
var arrDay2 = new Array('Pazar','Pazartesi', 'Salı', 'Çarşamba', 'Perşembe', 'Cuma', 'Cumartesi');
var arrDay = new Array('Pazar','P.tesi', 'Salı', 'Çarş.', 'Perş.', 'Cuma', 'C.tesi');
function dateToString(dateVal){
newDate=new Date(dateVal.substr(0,4),dateVal.substr(4,2)-1,dateVal.substr(6,2));
return dateVal.substr(6,2)+" "+monthArray[newDate.getMonth()]+" "+dateVal.substr(0,4)+" "+arrDay[newDate.getDay()]
}
function dateToString2(dateVal){
newDate=new Date(dateVal.substr(4,4),dateVal.substr(2,2)-1,dateVal.substr(0,2));
return dateVal.substr(0,2)+"."+dateVal.substr(2,2)+"."+dateVal.substr(4,4)+" "+arrDay[newDate.getDay()]
}
function dateToString3(dateVal){
newDate=new Date(dateVal.substr(0,4),dateVal.substr(4,2)-1,dateVal.substr(6,2));
return dateVal.substr(6,2)+"."+dateVal.substr(4,2)+"."+dateVal.substr(0,4)+" "+arrDay[newDate.getDay()]
}
function dateDirection(dateVal,day){
//newDate=new Date(dateVal.substr(6,4),dateVal.substr(3,2)-1,dateVal.substr(0,2));
newDate=new Date(dateVal.substr(0,4),dateVal.substr(4,2)-1,dateVal.substr(6,2));
newDate.setDate(newDate.getDate()+day);
reDay=newDate.getDate()
reMonth=newDate.getMonth()+1
reYear=newDate.getFullYear()
if(reDay<10){reDay="0"+reDay}
if(reMonth<10){reMonth="0"+reMonth}
//return reDay+"."+reMonth+"."+reYear
return reYear.toString()+reMonth.toString()+reDay.toString()
}
function displayDatePicker(dateFieldName, displayBelowThisObject)
{
var targetDateField = document.getElementsByName (dateFieldName).item(0);
// takvimin gösterileceği x, y koordinatları belirleniyor
var x = displayBelowThisObject.offsetTop;
var y = displayBelowThisObject.offsetTop + displayBelowThisObject.offsetHeight ;
// margin'ler hesaplanıp takvimin gösterileceği nesnenin tam altında olması için x ve y'ye bu boşluklar ekleniyor
var parent = displayBelowThisObject;
while (parent.offsetParent) {
parent = parent.offsetParent;
x += parent.offsetLeft-12;
y += parent.offsetTop ;
}
// takvimin çizilmesi için drawDatePicker'a textbox ve x,y koordinatları gönderildi
switch (dateFieldName){
case 'txtHotelDate':y=y-175;x=x-10;break;
case 'txtCarBDate' :y=y-200;x=x-90;break;
}
drawDatePicker(targetDateField, x, y);
}
/* takvimin anahatlarını ve özelliklerini belirleyen metod */
function drawDatePicker(targetDateField, x, y)
{
x=x+16;
var dt = getFieldDate(targetDateField.value);
// takvim tablosu datedpDivID adlı bir div içerisinde yer alıyor. Oluşturulmamış ise oluşturuluyor.
if (!document.getElementById(datedpDivID)) {
var newNode = document.createElement("div");
newNode.setAttribute("id", datedpDivID);
newNode.setAttribute("class", "dpDiv");
newNode.setAttribute("style", "visibility: hidden;");
document.body.appendChild(newNode);
}
// takvim x,y koordinatlarına kaydırılıyor ve visibility'si ayarlanıyor
var dpDiv = document.getElementById(datedpDivID);
dpDiv.style.position = "absolute";
dpDiv.style.left = x + "px";
dpDiv.style.top = y + "px";
dpDiv.style.visibility = (dpDiv.style.visibility == "visible" ? "hidden" : "visible");
dpDiv.style.display = (dpDiv.style.display == "block" ? "none" : "block");
dpDiv.style.zIndex = 99999;
// ve takvimin oluşturulması için refreshDatePicker metodu çağırılıyor
refreshDatePicker(targetDateField.name, dt.getFullYear(), dt.getMonth(), dt.getDate());
}
/* DatePicker'ı oluşturan metod (her güncellemeden sonra çağırılıyor)*/
function refreshDatePicker(dateFieldName, year, month, day)
{
/* Argüman gönderilmemiş ise bugün kullanılır. Başka şekilde ay ve yıl'ın gönderilmesi
gerekmektedir. (eğer gün gönderilmiş ise daha sonra seçili şekilde gösterilecektir) */
var thisDay = new Date();
if ((month >= 0) && (year > 0)) {
thisDay = new Date(year, month, 1);
} else {
day = thisDay.getDate();
thisDay.setDate(1);
}
// takvim tablosunu oluşturma başlangıcı
var html = "
\r\n";
html += "";
html += "";
html += "";
html += "| " + adjustYearButton(dateFieldName, thisDay, -1, "<< ", monthArray[thisDay.getMonth()] + " " + (thisDay.getFullYear()-1));
html += adjustMonthButton(dateFieldName, thisDay, -1, "<", monthArray[(thisDay.getMonth()+11) % 12] + " " + (thisDay.getFullYear() + parseInt((thisDay.getMonth() + 11) / 12) - 1)) + " | \r\n";
html += " " + monthArray[thisDay.getMonth()] + " " + thisDay.getFullYear() + " | \r\n";
html += "" + adjustMonthButton(dateFieldName, thisDay, 1, ">", monthArray[(thisDay.getMonth()+1) % 12] + " " +(thisDay.getFullYear() + parseInt((thisDay.getMonth() + 1) / 12)));
html += adjustYearButton(dateFieldName, thisDay, 1, " >>", monthArray[thisDay.getMonth()] + " " + (thisDay.getFullYear()+1)) + " | \r\n";
html += "\r\n";*/
/* 2. görünüş*/
html += "";
html += "
" + adjustMonthButton(dateFieldName, thisDay, -1, "  ", monthArray[(thisDay.getMonth()+11) % 12] + " " + (thisDay.getFullYear() + parseInt((thisDay.getMonth() + 11) / 12) - 1));
html += " " + monthArray[thisDay.getMonth()] + " ";
html += adjustMonthButton(dateFieldName, thisDay, 1, "  ", monthArray[(thisDay.getMonth()+1) % 12] + " " +(thisDay.getFullYear() + parseInt((thisDay.getMonth() + 1) / 12))) + " | \r\n";
html += "
" + adjustYearButton(dateFieldName, thisDay, -1, "  ", monthArray[thisDay.getMonth()] + " " + (thisDay.getFullYear()-1));
html += " " + thisDay.getFullYear() + " ";
html += adjustYearButton(dateFieldName, thisDay, 1, "  ", monthArray[thisDay.getMonth()] + " " + (thisDay.getFullYear()+1)) + " | \r\n";
html += " \r\n";
// günlerin kısaltmalarını ilk satıra yazıyoruz
html += "";
for(i = 0; i < dayArray.length; i++)
html += "| " + dayArray[i] + " | \r\n";
html += " \r\n";
// günleri ay'a uygun olarak tabloya ekliyoruz
html += "";
// normalde pazar olan haftanın ilk gününü pazartesi yapabilmek için yapılan işlem
var blankCount = thisDay.getDay();
if (blankCount != 0)
blankCount -= 1;
else
blankCount = 6;
// ilk önce ayın ilk gününden önceki boşluklar
for (i = 0; i < blankCount; i++)
html += "| \r\n";
// takvim'e günler yerleştiriliyor
do {
dayNum = thisDay.getDate();
onClick = " onclick=\"updateDateField('" + dateFieldName + "', '" + getDateString(thisDay) + "');\">";
if (dayNum == day)
html += " | " + dayNum + "" + " | \r\n";
else{
if (thisDay.getDay() != 6 && thisDay.getDay() != 0)
html += "\r\n";
else
html += " | \r\n";
}
// Eğer gün pazar ise yeni bir satır'a geçilir
if (thisDay.getDay() == 0)
html += " | \r\n ";
// gün arttırılıyor
thisDay.setDate(thisDay.getDate() + 1);
} while (thisDay.getDate() > 1)
// son kalan boşluklar tabloya ekleniyor
if (thisDay.getDay() > 0) {
for (i = 6; i > thisDay.getDay(); i--){
html += "| \r\n";
}
}
html += " | \r\n";
// kullanıcının bugün'e gitmesi ve takvimi kapatabilmesi için buton eklendi
html += "";
html += "| Bugün | \r\n";
html += "Kapat | \r\n";
html += " \r\n";
// ve tablo kapatılıyor
html += " \r\n";
html += " | ";
html += "
";
html += "
";
document.getElementById(datedpDivID).innerHTML = html;
}
/* Ay değiştirme butonunu oluşturan metod */
function adjustMonthButton(dateFieldName, dateVal, adjust, label, butTitle)
{
var newMonth = (dateVal.getMonth () + adjust) % 12;
var newYear = dateVal.getFullYear() + parseInt((dateVal.getMonth() + adjust) / 12);
if (newMonth < 0) {
newMonth += 12;
newYear += -1;
}
return "" + label + "";
}
/* Yıl değiştirme butonunu oluşturan metod */
function adjustYearButton(dateFieldName, dateVal, adjust, label, butTitle)
{
var newYear = dateVal.getFullYear() + adjust;
return "" + label + "";
}
/* Seçilen günü textbox'a gönderilecek string şeklinde hazırlayan metod ör: 03/09/2006 */
function getDateString(dateVal)
{
var dayString = "00" + dateVal.getDate();
var monthString = "00" + (dateVal.getMonth()+1);
dayString = dayString.substring(dayString.length - 2);
monthString = monthString.substring(monthString.length - 2);
return dayString + "/" + monthString + "/" + dateVal.getFullYear();
}
/* TextBox'taki tarihi, Date nesnesine çeviren metod*/
function getFieldDate(dateString)
{
var dateVal;
var dArray;
var d, m, y;
try {
dArray = dateString.split(".");
if (dArray) {
d = parseInt(dArray[0], 10);
m = parseInt(dArray[1], 10) - 1;
y = parseInt(dArray[2], 10);
dateVal = new Date(y, m, d);
} else if (dateString) {
dateVal = new Date(dateString);
} else {
dateVal = new Date();
}
} catch(e) {
alert("hata");
dateVal = new Date();
}
return dateVal;
}
// Textbox'taki değeri takvimde seçilen tarih ile değiştiren ve takvimi otomatik olarak kapatan metod
function updateDateField(dateFieldName, dateString)
{
var targetDateField = document.getElementsByName (dateFieldName).item(0);
if (dateString)
targetDateField.value = dateString;
var dpDiv = document.getElementById(datedpDivID);
dpDiv.style.visibility = "hidden";
dpDiv.style.display = "none";
targetDateField.focus();
}