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.offsetLeft; 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; y += parent.offsetTop ; } // takvimin çizilmesi için drawDatePicker'a textbox ve x,y koordinatları gönderildi switch (dateFieldName){ case 'RIptalTarihi':y=y-105;x=x-150;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"; // Ay, yıl ayar butonlarının bulunduğu ve ay, yıl bilgilerinin gösterildiği bar /* 1. görünüş html += ""; html += "\r\n"; html += "\r\n"; html += "\r\n"; html += "\r\n";*/ /* 2. görünüş*/ html += ""; html += "\r\n"; html += "\r\n"; html += "\r\n"; // günlerin kısaltmalarını ilk satıra yazıyoruz html += ""; for(i = 0; i < dayArray.length; i++) html += "\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"; else{ if (thisDay.getDay() != 6 && 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"; // kullanıcının bugün'e gitmesi ve takvimi kapatabilmesi için buton eklendi html += ""; html += "\r\n"; html += "\r\n"; html += "\r\n"; // ve tablo kapatılıyor 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)) + "
" + monthArray[thisDay.getMonth()] + " " + thisDay.getFullYear() + "
" + 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)) + "

" + 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))) + "

" + adjustYearButton(dateFieldName, thisDay, -1, "", monthArray[thisDay.getMonth()] + " " + (thisDay.getFullYear()-1)); html += " " + thisDay.getFullYear() + " "; html += adjustYearButton(dateFieldName, thisDay, 1, "", monthArray[thisDay.getMonth()] + " " + (thisDay.getFullYear()+1)) + "
" + dayArray[i] + "
\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 html += "\r\n"; } // Eğer gün pazar ise yeni bir satır'a geçilir if (thisDay.getDay() == 0) html += "
\r\n"; } } html += "
BugünKapat
\r\n"; 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(); }