var call = { inputs:new Array(), inputsRow:-1, dt:'', year:'', month:'', day:'', monthLength:'', monthCols:1, monthColStart:'', monthColEnd:'', curMonth:'', startingDay:'', monthName:'', lang:'tr', act:'', firstInt:true, type:'', currentInput:'', daysInMonth:[31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], monthLabels:{"tr":['Ocak', 'Şubat', 'Mart', 'Nisan', 'Mayıs', 'Haziran', 'Temmuz', 'Ağustos', 'Eylül', 'Ekim', 'Kasım', 'Aralık'],"en":['January','February','March','April','May','June','July','August','September','October','November','December']}, dayLabels:{"tr":['Pts', 'Sal', 'Çar', 'Per', 'Cum', 'Cts', 'Paz'],"en":['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']}, init : function(){ var body = document.getElementsByTagName('body').item(0); //var body = document.getElementById('calcal'); if (this.firstInt == true){ var browser = navigator.appName; var isIE = true; if (browser.search(new RegExp('microsoft',"i")) == -1 ) isIE = false; var caldiv = document.createElement('div'); caldiv.setAttribute('id','callDiv'); caldiv.setAttribute('class','caldiv'); caldiv.className = 'caldiv'; var frm = document.createElement('iframe'); frm.src = 'javascript:false;'; if ( isIE == false ) frm.src = 'javascript:void(0);'; frm.setAttribute('class','calFrm'); frm.className = 'calFrm'; caldiv.appendChild(frm); }else{ var caldiv = document.getElementById('callDiv'); } caldiv.appendChild(this.createMonths()); if (this.firstInt == true) this.createControls(caldiv); body.appendChild(caldiv); //postion and styles var e = document.getElementById(this.currentInput); var pos = this.findPos(e); caldiv.style.left = pos[0]+'px'; caldiv.style.top = (pos[1] + e.offsetHeight)+'px'; caldiv.style.width = 206 * (this.inputs[this.inputsRow].monthCol + 1)+'px'; if (this.firstInt == true){ if ( isIE == false ){ caldiv.style.width = (caldiv.offsetWidth - 4)+'px'; caldiv.style.height = (caldiv.offsetHeight - 8)+'px'; } } if (caldiv.style.visibility != "visible") caldiv.style.visibility="visible"; this.firstInt = false; }, newGrup:function(grpId, dateFormat, pickPast, pickFuture, over, monthCol, departureId, rturnId){ //call.newGrup('groupId','dateFormat',pickPast,pickFuture,'cols','inputId','inputId'); this.inputCheck(grpId); if (this.inputsRow == -1){ pickPast = (pickPast != true)?false:true; pickFuture = (pickFuture != true)?false:true; over = (over == '')?0:over; monthCol = parseInt(monthCol)-1; var d = this.createDate('','','',''); this.inputsRow = this.inputs.length; this.inputs[this.inputsRow] = {"grpId":grpId, "calId":"callDiv", "dateFormat":dateFormat, "pickFuture":pickFuture, "pickPast":pickPast, "over":over, "monthCol":monthCol, "curDate":d, "toDay":d, "selDate":d, "departure":{ "id":departureId, "date":d, "curMonth":d, "monthColStart":this.createDate('','','',1), "monthColEnd": this.createDate('','',d.getMonth() + monthCol,'end') }, "rturn":{ "id":rturnId, "date":d, "curMonth":d, "monthColStart":this.createDate('','','',1), "monthColEnd": this.createDate('','',d.getMonth() + monthCol,'end') } }; } }, createMonths:function(){ if (this.firstInt == true){ var months = document.createElement('div'); months.setAttribute('id','months'); months.setAttribute('class','months'); months.className = 'months'; }else{ var months = document.getElementById('months'); } months.innerHTML = ""; this.monthColStart = this.createDate(this.curMonth,'','',1); this.monthColEnd = this.createDate(this.curMonth,'',this.curMonth.getMonth() + this.inputs[this.inputsRow].monthCol,'end'); for (ii=0;ii<=this.inputs[this.inputsRow].monthCol;ii++){ if (ii == 0){ this.dt = this.monthColStart; months.appendChild(this.createMonth()); }else{ this.dt = this.createDate(this.monthColStart,'','n',''); months.appendChild(this.createMonth()); } } return months; }, createMonth:function(){ var inp = this.inputs; var cur = this.inputsRow; var st = this.createDate(this.dt,'','',1); var m = st.getMonth(); var y = st.getFullYear(); var startingDay = st.getDay()-1; if (startingDay == -1) startingDay = 6; monthLength = this.daysInMonth[m]; if (m == 1) {//February 29 control if ((y % 4 == 0 && y % 100 != 0) || y % 400 == 0) monthLength = 29; } var monthName = this.monthLabels[this.lang][m]; var month = document.createElement('div'); month.setAttribute('id','month'); month.setAttribute('class','month'); month.className = 'month'; var calhead = document.createElement('div'); calhead.setAttribute('class','calhead'); calhead.className = 'calhead'; var monthHeader = document.createElement('div'); monthHeader.setAttribute('class','monthHeader'); monthHeader.className = 'monthHeader'; if (inp[cur].over != 0){ var monthCol = document.createElement('div'); monthCol.setAttribute('id','monthCol'); monthCol.setAttribute('class','monthCol'); monthCol.className = 'monthCol'; this.createMonthSelectBox(monthCol); monthHeader.appendChild(monthCol); var yearCol = document.createElement('div'); yearCol.setAttribute('id','yearCol'); yearCol.setAttribute('class','yearCol'); yearCol.className = 'yearCol'; this.createYearSelectBox(yearCol); monthHeader.appendChild(yearCol); }else{ var selMonth = document.createElement('p'); selMonth.innerHTML = monthName+" "+y; monthHeader.appendChild(selMonth); } calhead.appendChild(monthHeader); var dayHeader = document.createElement('div'); dayHeader.setAttribute('class','dayHeader'); dayHeader.className = 'dayHeader'; for (i=0; i toDay && pickFuture == false)){ wd.setAttribute('class','oldDate'); wd.className = 'oldDate'; }else { if (c >= 5){ wd.setAttribute('class','weekEnd'); wd.className = 'weekEnd'; }else{ wd.setAttribute('class','weekIn'); wd.className = 'weekIn'; } if (tmpDate.getTime() == inp[cur].departure.date.getTime()){ wd.setAttribute('class','departureDate'); wd.className = 'departureDate'; } if (tmpDate.getTime() == inp[cur].rturn.date.getTime()){ wd.setAttribute('class','rturnDate'); wd.className = 'rturnDate'; } if (tmpDate.getTime() == toDay.getTime()){ wd.setAttribute('class','toDoday'); wd.className = 'toDoday'; } wd.onclick = function(){call.setInput(this.val); return false;}; } day++; }else{ wd.innerHTML = ""; wd.setAttribute('class','oldDate'); wd.className = 'oldDate'; } week.appendChild(wd); } month.appendChild(week); } return month; }, createControls:function(caldiv){ var inp = this.inputs; var cur = this.inputsRow; var calControls = document.createElement('div'); calControls.setAttribute('class','calControls'); calControls.className = 'calControls'; var gotoPrev = document.createElement('a'); gotoPrev.setAttribute("id","gotoPrev"); gotoPrev.setAttribute("href","#"); gotoPrev.innerHTML = "«"; gotoPrev.onclick = function(){call.changeMonth('p'); return false;}; calControls.appendChild(gotoPrev); caldiv.appendChild(calControls); var calControls2 = document.createElement('div'); calControls2.setAttribute('class','calControls2'); calControls2.className = 'calControls2'; var closeCal = document.createElement('a'); closeCal.setAttribute("id","closeCal"); closeCal.setAttribute("href","#"); closeCal.innerHTML = "×"; closeCal.onclick = function(){call.hide(); return false;}; calControls2.appendChild(closeCal); var gotoNext = document.createElement('a'); gotoNext.setAttribute("id","gotoNext"); gotoNext.setAttribute("href","#"); gotoNext.innerHTML = "»"; gotoNext.onclick = function(){call.changeMonth('n'); return false;}; calControls2.appendChild(gotoNext); caldiv.appendChild(calControls2); }, createYearSelectBox:function(yearCol){ var inp = this.inputs; var cur = this.inputsRow; var y = this.dt.getFullYear(); yearCol.innerHTML = ''; var selYear = document.createElement('select'); selYear.setAttribute('id','selYear'); selYear.onchange = function(){call.changeYear(this.value); return false;}; var ov = inp[cur].over; var start = inp[cur].toDay.getFullYear(); var end = start + ov; if (ov < 0){ for (i=start;i>end; i--){ var op = document.createElement('option'); op.setAttribute('value',i); op.innerHTML=i; if (i == y){ op.setAttribute('selected','selected'); op.selected=true; } selYear.appendChild(op); } }else{ for (i=start; i this.inputs[c][this.type].monthColEnd ){ this.curMonth = this.monthColStart = this.createDate(this.inputs[c][this.type].date,'','',1); this.monthColEnd = this.createDate(this.inputs[c][this.type].date,'',this.inputs[c][this.type].date.getMonth() + this.inputs[this.inputsRow].monthCol,'end'); }else{ this.curMonth = this.monthColStart = this.inputs[c][this.type].monthColStart; this.monthColEnd = this.inputs[c][this.type].monthColEnd; } this.init(); } }, hide:function(){ document.getElementById(this.inputs[this.inputsRow].calId).style.visibility="hidden"; }, changeMonth:function(v){ var c = this.inputsRow; var tmpDate = this.createDate(this.curMonth,'',v,''); if ((tmpDate <= this.inputs[c].toDay && this.inputs[c].pickPast == true) || (tmpDate.getMonth() == this.inputs[c].toDay.getMonth() ) || (tmpDate > this.inputs[c].toDay && this.inputs[c].pickFuture == true)){ this.curMonth = tmpDate; this.init(); } }, changeYear:function(year){ var tmpDate = this.createDate(this.curMonth,year,'',''); this.curMonth = tmpDate; this.init(); }, setInput:function(dt){ var c = this.inputsRow; var e = this.currentInput; this.inputs[c][this.type].monthColStart = this.monthColStart; this.inputs[c][this.type].monthColEnd = this.monthColEnd; this.inputs[c].curDate = dt; this.inputs[c].selDate = dt; if (this.inputs[c].departure.id == this.currentInput){ this.inputs[c].departure.date = dt; }else if (this.inputs[c].rturn.id == this.currentInput){ this.inputs[c].rturn.date = dt; } if (this.type == 'departure' && this.inputs[c].rturn.id != ''){ var rturnInput = document.getElementById(this.inputs[c].rturn.id); var rturnInputDate = this.strToDate(rturnInput.value,this.inputs[c].dateFormat); if (this.inputs[c].departure.date > this.inputs[c].rturn.date && this.inputs[c].departure.date > rturnInputDate){ rturnInput.value = ''; this.inputs[c].rturn.date= dt; } }else if (this.type == 'rturn' && this.inputs[c].departure.id != ''){ var departureInput = document.getElementById(this.inputs[c].departure.id); var departureInputDate = this.strToDate(departureInput.value,this.inputs[c].dateFormat); if (this.inputs[c].rturn.date < this.inputs[c].departure.date && this.inputs[c].rturn.date < departureInputDate){ departureInput.value = ''; this.inputs[c].departure.date = dt; } } document.getElementById(e).value = this.formatOutput(this.inputs[c].curDate,this.inputs[c].dateFormat); document.getElementById(this.inputs[this.inputsRow].calId).style.visibility="hidden"; }, createDate:function(dt,y,m,d){ if (dt == ''){ dt = new Date(); } if (y == ''){y = dt.getFullYear();} if (m === '') m = dt.getMonth(); else if (m == 'p' ) m = dt.getMonth()-1; else if (m == 'n') m = dt.getMonth()+1; if (m == 12){ m=0; y++; }else if (m == -1){ m=11; y--; } if (d == ''){d = dt.getDate();} if (d == 'end' || d > this.daysInMonth[m] ){ d = this.daysInMonth[m];} return new Date(y,m,d); }, formatOutput:function(d,f){ var ds=0,dc='',ms=0,mc='',ys=0,yc='',c; var day=d.getDate(), month=d.getMonth()+1, year=d.getFullYear(); for (i=0;i 1){ day = d.getDate(); if (day < 10) day = '0'+day; } if (ms > 1){ if (month < 10) month = '0'+month; } year = ''+d.getFullYear(); year = year.substr(year.length-ys); f = f.replace(new RegExp(dc,"i"),day); f = f.replace(new RegExp(mc,"i"),month); f = f.replace(new RegExp(yc,"i"),year); return f; }, strToDate:function(d,f){ var ds=0,dc='',ms=0,mc='',ys=0,yc='',c; if (d.length != f.length){ return new Date(); } for (i=0;i