var lefter = 250 ;
var topper = 160 ;
var vWinCal ;
document.onmousedown=click;
document.onkeydown=click;
document.oncontextmenu=click;
function click(e) {
	if(vWinCal != null && vWinCal.closed != true)	{
		vWinCal.focus(); 
		return false;
	}
}

function rollCalendar(dropmonth, dropyear, strtarget, str_datetime) {
	var dt_datetime = str2dt4(str_datetime)
	dt_datetime.setYear(dropyear.value);
	dt_datetime.setMonth(dropmonth.value);
	show_calendar(strtarget, dt2dtstr4(dt_datetime));
}

function show_calendar(str_target, str_datetime) {

	//DateFeldEinTextDisabled
	if(str_datetime == null)
		str_datetime = eval(str_target+'.value');
	var n_weekstart = 0; // day week starts from (normally 0 or 1)
	var dt_datetime = (str_datetime == null || str_datetime =="" ?  new Date() : str2dt4(str_datetime));
	var dt_prev_year = new Date(dt_datetime);
	dt_prev_year.setYear(dt_datetime.getYear()-1);
	var dt_prev_month = new Date(dt_datetime);
	dt_prev_month.setMonth(dt_datetime.getMonth()-1);
	if (dt_datetime.getMonth()%12 != (dt_prev_month.getMonth()+1)%12) {
		dt_prev_month.setMonth(dt_datetime.getMonth());
		dt_prev_month.setDate(0);
	}
	var dt_next_month = new Date(dt_datetime);
	dt_next_month.setMonth(dt_datetime.getMonth()+1);
	if ((dt_datetime.getMonth() + 1)%12 != dt_next_month.getMonth()%12)
		dt_next_month.setDate(0);
	var dt_next_year = new Date(dt_datetime);
	dt_next_year.setYear(dt_datetime.getYear()+1);
	
	var dt_firstday = new Date(dt_datetime);
	dt_firstday.setDate(1);
	dt_firstday.setDate(1-(7+dt_firstday.getDay()-n_weekstart)%7);
	var dt_lastday = new Date(dt_next_month);
	dt_lastday.setDate(0);
	
	// html generation (feel free to tune it for your particular application)
	// print calendar header
	var str_buffer = new String (
		"<html>\n"+
		"<head>\n"+
		"	<title>"+"Calendar"+"</title>\n"+
		"</head>\n"+
		"<body bgcolor=\"#4682B4\">\n"+
		"<table class=\"clsOTable\" cellspacing=\"0\" border=\"0\" width=\"210\">\n"+
		"<tr><td bgcolor=\"#4682B4\">\n"+
		"<table STYLE=\"table-layout:fixed\" cellspacing=\"1\" cellpadding=\"3\" border=\"0\" width=\"100%\">\n"+
		"<tr>\n"+
		"<td colspan=7 width=210 height=30 align=center>\n");
		str_buffer+=
		"<SELECT ID=\"dropmonth\" style=\"font-family:Verdana, Geneva, Arial, "+
		"Helvetica, sans-serif;font-size:10px;line-height:12px;"+
		"background-color:#DBEAF5;color:black;width:100\" "+
		"onchange=\"window.opener.rollCalendar(dropmonth,dropyear,"+
		"'"+str_target+"','"+ dt2dtstr4(dt_datetime)+"')\">\n";
		for(z=0;z<monthNames.length-1;z++) {
			str_buffer+=
			"<OPTION value=\""+(z)+"\"";
			if(z == dt_datetime.getMonth())
				str_buffer+=" SELECTED";
			str_buffer+=">"+monthNames[z+1]+"</OPTION>\n";
		}
		str_buffer+=
		"</SELECT>\n"+
		"<SELECT ID=\"dropyear\" style=\"font-family:Verdana, Geneva, Arial, "+
		"Helvetica, sans-serif;font-size:10px;line-height:12px;"+
		"background-color:#DBEAF5;color:black;width:60\""+
		"onchange=\"window.opener.rollCalendar(dropmonth,dropyear,"+
		"'"+str_target+"','"+ dt2dtstr4(dt_datetime)+"')\">\n";
		for(z=1900;z<2051;z++) {
			str_buffer+=
			"<OPTION value=\""+z+"\" ";
			if(dt_datetime.getYear() >1999){
				if(z == dt_datetime.getYear())
					str_buffer+=" SELECTED";
				str_buffer+=">"+z+"</OPTION>\n";
			}else{
				if(z == "19" + dt_datetime.getYear())
					str_buffer+=" SELECTED";
				str_buffer+=">"+z+"</OPTION>\n";
			}
		}
		str_buffer+=
		"</SELECT>\n"+
		"</td>\n</tr>\n";

	var dt_current_day = new Date(dt_firstday);
	// print weekdays titles
	str_buffer += "<tr>\n";
	
	for (var n=0; n<7; n++)
		str_buffer += "<td  style=\"font-family:tahoma,verdana;background-color:#87CEFA;text-align:center;color:white;font-size:12px;width:30  \">"+
		shortDayNames[(n_weekstart+n)%7]+"</td>\n";
		
	// print calendar table
	str_buffer += "</tr>\n";
	while (dt_current_day.getMonth() == dt_datetime.getMonth() ||
		dt_current_day.getMonth() == dt_firstday.getMonth()) {
		// print row heder
		str_buffer += "<tr>\n";
		for (var n_current_wday=0; n_current_wday<7; n_current_wday++) {
				if (dt_current_day.getDate() == dt_datetime.getDate() &&
					dt_current_day.getMonth() == dt_datetime.getMonth())
					// print current date
					
					str_buffer += "	<td  style=\"font-family:tahoma,verdana;background-color:#D3D3D3;text-align:right;font-size:12px;width:30  \">";
					
					
				else if (dt_current_day.getDay() == 0 || dt_current_day.getDay() == 6)
					// weekend days
					
					str_buffer += "	<td   style=\"font-family:tahoma,verdana;background-color:#DBEAF5;text-align:right;font-size:12px;width:30  \">";       
					
					
				else
					// print working days of current month
					
					str_buffer += "	<td style=\"font-family:tahoma,verdana;background-color:#FFFFFF;text-align:right;font-size:12px;width:30  \">"; 
				
					

				if (dt_current_day.getMonth() == dt_datetime.getMonth())
					// print days of current month
					str_buffer += "<a href=\"#\" onclick=\"window.opener."+str_target+
					".value='"+dt2dtstr4(dt_current_day)+"';window.opener."+str_target+".focus();if(window.opener.frmView.Attainedagelastbirthday != undefined || window.opener.frmView.Attainedagelastbirthday !=null){window.opener.frmView.Attainedagelastbirthday.value = '"+ageCalc(dt2dtstr4(dt_current_day))+"';}; window.close();\">"+
					"<font color=\"black\">"+
					"<style=\"font-family:tahoma,verdana;color:black;font-size:12px\">";
					
				else 
					// print days of other months
					str_buffer += "<a href=\"#\" onclick=\"window.opener."+str_target+
					".value='"+dt2dtstr4(dt_current_day)+"';window.opener."+str_target+".focus(); window.close(); \">"+
					"<font color=\"gray\">"+
					"<style=\"font-family:tahoma,verdana;color:gray;font-size:12px\">";
				
					
				str_buffer += dt_current_day.getDate()+"</font></a></td>\n";
				dt_current_day.setDate(dt_current_day.getDate()+1);
		}
		// print row footer
		str_buffer += "</tr>\n";
	}
	// print calendar footer
	str_buffer +=
		"</table>\n" +
		"</tr>\n</td>\n</table>\n" +
		"</body>\n" +
		"</html>\n";

	if(window.event != null) {
		var posX = window.event.x; posX = posX > screen.width-330 ? posX - 290 : posX + 10; lefter = posX ;
		var posY = window.event.y; posY = posY > screen.height-350 ? posY - 110 : posY + 105; topper = posY ;
	}
	
	vWinCal = window.open("","Calendar","height=200,width=240,top="+topper+",left="+lefter+",menubar=no,resizable=no,scrollbars=no,status=no,titlebar=no,toolbar=no");
	
	vWinCal.opener = self;
	vWinCal.focus();
	var calc_doc = vWinCal.document;
	calc_doc.write (str_buffer);
	calc_doc.close();
}
// datetime parsing and formatting routimes. modify them if you wish other datetime format
function str2dt4 (str_datetime) {
	if(parseDateString(str_datetime, DateFormat.LONG) == false)
		return new Date();
	else
		return parseDateString(str_datetime, DateFormat.LONG);
}
function dt2dtstr4 (dt_datetime) {
	return formatDate(dt_datetime, DateFormat.LONG);
}

function ageCalc(date) {
 
	//checkdate1(date);
  	var dateArray = date.split('-');
	return displayage(dateArray[2], dateArray[1], dateArray[0], 'years', 0, 'rounddown');
	//return displayage(dateArray[1], dateArray[2], dateArray[0], 'years', 0, 'rounddown');
 }

/*function checkdate1(input){ 
	
	var validformat=/^\d{4}\-\d{2}\-\d{2}$/ //Basic check for format validity 
	var returnval=false; 

	if (!validformat.test(input.value)) 

		alert("Invalid Date Format. Please correct and submit again.") ;

		else
			{
				var yearfield=input.value.split("-")[0] 
				var monthfield=input.value.split("-")[1] 
				var dayfield=input.value.split("-")[2] 
				var dayobj = new Date(yearfield, monthfield-1, dayfield) 
	if ((dayobj.getMonth()+1!=monthfield)||(dayobj.getDate()!=dayfield)||(dayobj.getFullYear()!=yearfield))

			alert("Invalid Day, Month, or Year range detected. Please correct and submit again.") ;

		else 
			{ 
				alert ('Correct date'); 
				returnval=true; 
			} 
		} 
	if (returnval==false) input.select() 
		return returnval; 
  }*/


var one_day=1000*60*60*24
var one_month=1000*60*60*24*30
var one_year=1000*60*60*24*30*12

function displayage(yr, mon, day, unit, decimal, round){
today=new Date()


var pastdate=new Date(yr, mon-1, day)

var countunit=unit
var decimals=decimal
var rounding=round

finalunit=(countunit=="days")? one_day : (countunit=="months")? one_month : one_year
decimals=(decimals<=0)? 1 : decimals*10

if (unit!="years"){
if (rounding=="rounddown")
document.write(Math.floor((today.getTime()-pastdate.getTime())/(finalunit)*decimals)/decimals+" "+countunit)
else
document.write(Math.ceil((today.getTime()-pastdate.getTime())/(finalunit)*decimals)/decimals+" "+countunit)
}
else{
yearspast=today.getFullYear()-yr-1
tail=(today.getMonth()>mon-1 || today.getMonth()==mon-1 && today.getDate()>=day)? 1 : 0
pastdate.setFullYear(today.getFullYear())


pastdate2=new Date(today.getFullYear()-1, mon-1, day)
tail=(tail==1)? tail+Math.floor((today.getTime()-pastdate.getTime())/(finalunit)*decimals)/decimals : Math.floor((today.getTime()-pastdate2.getTime())/(finalunit)*decimals)/decimals
	//alert("new date"+tail);
//document.write(yearspast+tail+" "+countunit)
//alert("age"+(yearspast+tail));
//return(yearspast+tail);
return " ";

}
}


