var calPopup = window.createPopup();
var arrMN 	= new Array('Ocak','Şubat','Mart','Nisan','Mayıs','Haziran','Temmuz','Ağustos','Eylül','Ekim','Kasım','Aralık');
var arrShortMN 	= new Array('Ock','Şub','Mrt','Nsn','May','Haz','Tem','Ağu','Eyl','Ekm','Ksm','Ara');
var arrDN 	= new Array('Pazartesi', 'Salı', 'Çarşamba', 'Perşembe', 'Cuma', 'Cumartesi', 'Pazar');
var arrShortDN 	= new Array('Pt', 'Sl', 'Çr', 'Pr', 'Cm', 'Ct', 'Pz');

function getPos(objTarget) {
	var coor=new Object();
	coor.x=objTarget.offsetLeft-document.body.scrollLeft + objTarget.offsetWidth + 2;
	coor.y=objTarget.offsetTop-document.body.scrollTop + 2;
	while ((objTarget=objTarget.offsetParent)!=null){
		coor.x += objTarget.offsetLeft;
		coor.y += objTarget.offsetTop;
	}
	return coor;
}

function GetMonthLength(iMonth, iYear){
	//iMonth -> 0 indexed
	var arrDIM = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	if ( ( ((iYear%4==0)&&(iYear%100 != 0)) || (iYear%400==0) ) && (iMonth==1) )
		return 29;
	else
		return arrDIM[iMonth];
}

function CheckDate(sDate) {
	var re = /^(3[01]|0?[1-9]|[12]\d)([\x2d\x2e\x2f\x5c\s]*)(0?[1-9]|1[012])([\x2d\x2e\x2f\x5c\s]*)(19\d{2}|20\d{2}|\d{2})$/;
	var arr = re.exec(sDate+'');
	var dNewDate = null;
	if (arr){
		var iDay = parseInt(arr[1],10);
		var iMonth = parseInt(arr[3],10); //1 indexed
		var iYear = parseInt(arr[5],10);
		if (iYear<100) iYear +=2000;
		if (iDay<(GetMonthLength(iMonth-1, iYear)+1))
			dNewDate = new Date(iYear, iMonth-1, iDay);
	}
	return dNewDate
}

function CrgDateFormat(iDay, iMonth, iYear){
	return ((iDay<10)?'0':'') + iDay + '/'+ ((iMonth<10)?'0':'') + iMonth+ '/' + iYear;
}

function onChg(objTarget){
	var dDate = CheckDate(objTarget.value);
	if (!dDate){
		setDirty(objTarget, true)
	}else{
		objTarget.value = CrgDateFormat(dDate.getDate(), dDate.getMonth()+1, dDate.getFullYear());
		setDirty(objTarget, false)
	}
}

function onClk(objText, iDay, iMonth, iYear, bClose) {
	if (!bClose)
		calPopup.document.body.innerHTML=MyCal(objText, CrgDateFormat(iDay, iMonth+1, iYear));
	else {
		if (document.all.item(objText) && document.all.item(objText).value!=undefined)
			document.all.item(objText).value =  CrgDateFormat(iDay, iMonth+1, iYear);
		calPopup.hide();
	}
		document.all.item(objText).focus()
}

function ShowCal(objTarget){
	if (objTarget.disabled)
		return
	var cor = getPos(objTarget);
	calPopup.show(cor.x, cor.y, 145, 145, document.body);
	if (calPopup.document.styleSheets.length==0){
		calPopup.document.createStyleSheet('../css/calendar.css');
	}
	calPopup.document.body.innerHTML = MyCal(objTarget.id);
}

function MyCal(objName, tmpVal){
	var dDate = null;
	var dToday = new Date();
	
	if (tmpVal)
		dDate = CheckDate(tmpVal);
	else
		dDate = CheckDate(document.all.item(objName).value);

	if (!dDate)
		dDate = dToday;
	var iDay = dDate.getDate();
	var iMonth = dDate.getMonth(); // 0 indexed
	var iYear = dDate.getFullYear();
	var iWDay = (dDate.getDay()+6)%7; // 0->ptesi

	dBegin 	= new Date(iYear, iMonth, 1);
	dEnd 	= new Date(iYear, iMonth, GetMonthLength(iMonth, iYear));
	
	var iBWD = (dBegin.getDay()+6)%7;
	var iEWD = (dEnd.getDay()+6)%7;
	
	var iNextMonth = (iMonth + 1) % 12;
	var iPrevMonth = (iMonth + 11) % 12;
	var iNextYear = iYear + 1;
	if (iNextYear>=2100) iNextYear = 2099;
	var iPrevYear = iYear - 1;
	if (iPrevYear<=1900) iPrevYear = 1901;

	var sTable = '<TABLE border=0 cellpadding=0 cellspacing=0 width=145 height=145>';
	sTable += '<TR><TD colspan=7 align=center style="border:none"><TABLE cellpadding=0 cellspacing=0 style="border:none"><TR>';
	sTable += '<TD width=10		style="border:none" align =left		onclick="parent.onClk(\''+objName+'\', '+iDay+', ' + iMonth + ', ' + iPrevYear + ', false)">					<A href="javascript:"><B><<</B></A></TD>';
	sTable += '<TD width=30		style="border:none" align =right	onclick="parent.onClk(\''+objName+'\', '+iDay+', ' + iPrevMonth + ', ' + ((iPrevMonth==11)?iPrevYear:iYear) + ', false)">		<A href="javascript:"><B><</B></A></TD>';
	sTable += '<TD width=65		style="border:none" align =center>' + arrShortMN[iMonth] + ' ' + iYear + '</TD>';
	sTable += '<TD width=30		style="border:none" align =left		onclick="parent.onClk(\''+objName+'\', '+iDay+', ' + iNextMonth + ', ' + ((iNextMonth==0)?iNextYear:iYear) + ', false)">	<A href="javascript:"><B>></B></A></TD>' ;
	sTable += '<TD width=10		style="border:none" align =right	onclick="parent.onClk(\''+objName+'\', '+iDay+', ' + iMonth + ', ' + iNextYear + ', false)">					<A href="javascript:"><B>>></B></A></TD>' ;
	sTable += '</TD></TR></TABLE></TD></TR>';
	sTable += '<TR>';
	
	for (i=0; i<7; i++)
		sTable += '<TH align=center width=20>' + arrShortDN[i%7] + '</TD>';
	sTable += '</TR><TR>';
	for (i=0; i<iBWD; i++)
		sTable += '<TD align=right class="grey" onclick="parent.onClk(\''+objName+'\', '+ (GetMonthLength((iMonth+11)%12, iYear)-iBWD+1+i) + ', ' + ((iMonth+11)%12) + ', ' + ((!iMonth)?iYear-1:iYear) + ', true)"><A href="javascript:" class="grey">' + (GetMonthLength((iMonth+11)%12, iYear) - iBWD + 1 + i)  + '</A></TD>';
	var theDay = '';
	for (i=1; i<GetMonthLength(iMonth, iYear)+1; i++){
		if (i==iDay){
			theDay = 'selected'
		}else if (((i+iBWD)%7)==0){
			theDay = 'red'
		}else if (((i+iBWD)%7)==6){
			theDay = 'red'
		}else {
			theDay = 'black'
		}
		sTable += '<TD align=right class="' + theDay + '" onclick="parent.onClk(\''+objName+'\', '+i+', ' + iMonth + ', ' + iYear + ', true)"><A href="javascript:" class="' + theDay + '" >' + i + '</A></TD>';
		if (((i+iBWD)%7)==0)
			sTable += '</TR><TR>';
	}
	for (i=iEWD+1; i<7; i++)
		sTable += '<TD align=right class="grey" onclick="parent.onClk(\''+objName+'\', '+(i-iEWD)+', ' + ((iMonth+1)%12) + ', ' + ((iMonth==11)?iYear+1:iYear) + ', true)"><A href="javascript:" class="grey">' + (i-iEWD) + '</A></TD>';
	if (objName!=undefined && objName!="undefined"){
		sTable += '<TR height=100% valign=bottom><TD colspan=7 align=center ><TABLE cellpadding=0 cellspacing=0 style="border:none"><TR><TD style="border:none" onclick="parent.onClk(\''+objName+'\', '+dToday.getDate()+', ' + dToday.getMonth() + ', ' + dToday.getFullYear() + ', true)">';
		sTable += '<B><A class=grey href="javascript:">Bugün</A></B>' 
		sTable += '</TD></TR>';
	}
	sTable += '</TABLE></TD></TR>';
	sTable += '</TABLE>';
	return sTable;
}
