document.write('<div id="container"');
document.write(' style="width:230px;left:0px;top:0px;position:absolute;display:none;z-index:99"></div>');
var calc_doc = null;
var startH="";
var stopH="";
if (document.all) {
	startH='<iframe src="about:blank" scrolling="no" frameborder="0" style="position:absolute;width:230px;height:127%;top:0px;left:0px;border:none;display:block;z-index:0"></iframe>'+
'<div style="position:absolute;z-index:99">';
	stopH='</div>';
}

function show_calendar(objCal,str_form, str_elements, str_datetime, fun_back) {
	calc_doc=document.getElementById('container');
	Calendar(str_form, str_elements, str_datetime, fun_back);
	//calc_doc.style.left=findPosX(objCal);
	calc_doc.style.left=( (findPosX(objCal)-100) <0 ? 10 : (findPosX(objCal)-100) ) +"px";
        calc_doc.style.top=( (findPosY(objCal)+40) <0 ? 10 : (findPosY(objCal)+40) )+"px";
	calc_doc.style.zIndex=999;
	calc_doc.style.display="";
    //document.getElementById('tempval').onkeypress = keyDown;
}
function Calendar(str_form, str_elements, str_datetime, fun_back){
    calc_doc.innerHTML=	startH+calCalendar(str_form, str_elements, str_datetime, fun_back)+stopH;
	//alert(startH+calCalendar(str_form, str_elements, str_datetime, fun_back)+stopH);
}
function HideCal(){
	calc_doc.style.display="none";
}
function calCalendar(str_form, str_elements, str_datetime, fun_back){
	var arr_months = ["January", "February", "March", "April", "May", "June",
        "July", "August", "September", "October", "November", "December"];
    var week_days = ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"];
	var n_weekstart = 0; // da quando parte la settimana (0 o 1)

	var dt_datetime = (str_datetime == null || str_datetime =="" ?  new Date() : str2dt(str_datetime));

	var dt_prev_year = new Date(dt_datetime);
	dt_prev_year.setYear(dt_datetime.getFullYear()-1);
	var dt_next_year = new Date(dt_datetime);
    dt_next_year.setDate(1);
	dt_next_year.setYear(dt_datetime.getFullYear()+1);

	var dt_prev_month = new Date(dt_datetime);
	dt_prev_month.setMonth(dt_datetime.getMonth()-1);
	var dt_next_month = new Date(dt_datetime);
    dt_next_month.setDate(1);
	dt_next_month.setMonth(dt_datetime.getMonth()+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);

	var back_action=(str_form && str_form!=0)?"document.forms['"+str_form+"'].elements[\'"+ str_elements+"\'].value=":"document.getElementById(\'"+ str_elements+"\').value=";
	var str_buffer = new String (
		"<table class=\"clsOTable\" cellspacing=\"0\" border=\"0\" width=\"100%\">\n"+
		"<tr id=\"titleBar\" style=\"cursor:pointer\"><td bgcolor=\"#657CA3\" width=\"100%\" style=\"font-family: Verdana, Arial, Helvetica, sans-serif; font-size:10px;color:#ffffff\">Calendario</td>"+
		"<td  bgcolor=\"#657CA3\" width=\"1%\" style=\"font-family: Verdana, Arial, Helvetica, sans-serif; font-size:12px;cursor:pointer\" onClick=\"HideCal();\" title=\"Chiudi\" align=\"right\">"+
		"<font color=\"#ffffff\">x&nbsp;</font></td></tr>"+
		"<tr><td bgcolor=\"#345286\" colspan=\"2\">\n"+
		"<table cellspacing=\"1\" cellpadding=\"3\" border=\"0\" width=\"100%\">\n"+
		"<tr>\n	<td bgcolor=\"#345286\" colspan=\"2\"><a href=\"javascript:Calendar('"+
		str_form+"','"+ str_elements+"', '"+ dt2dtstr(dt_prev_month)+"','"+fun_back+"');\">"+
		"<img src=\"http://"+location.host+"/images/prev.gif\" width=\"16\" height=\"16\" border=\"0\""+
		" alt=\"mese precedente\">"+
        "<a href=\"javascript:Calendar('"+
		str_form+"','"+ str_elements+"', '"+ dt2dtstr(dt_prev_year)+"','"+fun_back+"');\">"+
		"<img src=\"http://"+location.host+"/images/prevy.gif\" width=\"16\" height=\"16\" border=\"0\""+
		" alt=\"anno precedente\">"+
		"</a></td>\n"+
		"	<td bgcolor=\"#345286\" colspan=\"3\">"+
		"<font color=\"white\" face=\"tahoma, verdana\" style=\"font-size:12px; \">"
		+arr_months[dt_datetime.getMonth()]+" "+dt_datetime.getFullYear()+"</font></td>\n"+
		"	<td bgcolor=\"#345286\" align=\"right\" colspan=\"2\"><a href=\"javascript:Calendar('"+
		str_form+"', '"+ str_elements+"', '"+dt2dtstr(dt_next_year)+"','"+fun_back+"');\">"+
		"<img src=\"http://"+location.host+"/images/nexty.gif\" width=\"16\" height=\"16\" border=\"0\""+
		" alt=\"anno successivo\"></a>"+
        "<a href=\"javascript:Calendar('"+
		str_form+"', '"+ str_elements+"', '"+dt2dtstr(dt_next_month)+"','"+fun_back+"');\">"+
		"<img src=\"http://"+location.host+"/images/next.gif\" width=\"16\" height=\"16\" border=\"0\""+
		" alt=\"mese successivo\"></a>"+
		"</td>\n</tr>\n"
	);

	var dt_current_day = new Date(dt_firstday);
	str_buffer += "<tr>\n";
	for (var n=0; n<7; n++)
		str_buffer += "	<td bgcolor=\"#A5A3A3\">"+
		"<font color=\"white\" face=\"tahoma, verdana\" style=\"font-size:12px; \">"+
		week_days[(n_weekstart+n)%7]+"</font></td>\n";

	str_buffer += "</tr>\n";
	while (dt_current_day.getMonth() == dt_datetime.getMonth() ||
		dt_current_day.getMonth() == dt_firstday.getMonth()) {

		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())

					str_buffer += "	<td bgcolor=\"#FFB6C1\" align=\"right\">";
				else if (dt_current_day.getDay() == 0 || dt_current_day.getDay() == 6)
					str_buffer += "	<td bgcolor=\"#DBEAF5\" align=\"right\">";
				else
					str_buffer += "	<td bgcolor=\"white\" align=\"right\">";

				str_buffer += "<a href=\"javascript:"+back_action+"'"+dt2dtstr(dt_current_day)+"';"+((fun_back)?''+fun_back+'();':'')+" HideCal();\">";
				if (dt_current_day.getMonth() == dt_datetime.getMonth()){
					str_buffer +="<font color=\"black\" face=\"tahoma, verdana\" style=\"font-size:12px; \">"+dt_current_day.getDate()+"</font></a></td>\n";
				} else {
					str_buffer += "<font color=\"gray\" face=\"tahoma, verdana\" style=\"font-size:12px; \">"+dt_current_day.getDate()+"</font></a></td>\n";
                }
			 	dt_current_day.setDate(dt_current_day.getDate()+1);
		}
		// print row footer
		str_buffer += "</tr>\n";
	}

	str_buffer +=
		"</table>\n" +
		"</td>\n</tr>\n<tr><td colspan=\"2\"><table cellspacing=\"0\" border=\"0\" width=\"100%\">"+
		"<tr style=\"background-color:#657CA3;font-family: Verdana, Arial, Helvetica, sans-serif; font-size:10px;cursor:pointer;color:#FFFFFF\">"+
		"<td nowrap>Ins.man.<input type=\"text\" id=\"tempval\" name=\"tempval\" value=\"\" maxlength=\"10\" size=\"14\"  class=\"input_data_black\" "+
//		"onkeypress=\"if(keyDown(this)==13&&ValidateDate(this)){document."+str_form+".elements[\'"+ str_elements+"\'].value=this.value;HideCal();}\" title=\"Inserimento manuale. La data deve essere nel formato [gg/mm/aaaa]\"></td>"+
	    "onkeyup=\"if(chkKey()==13&&ValidateDate(this)){"+back_action+"normalizeDate(this.value);HideCal();}else{if(chkKey()==13)this.value='';};\" title=\"Insert a date in the [gg/mm/aaaa] format]\"></td>"+
        "<td onClick=\""+back_action+"'';HideCal();\" title=\"Delete current value\">&nbsp;[Del.Val]</td></tr></table>"+
	    "</td></tr></table>\n";
	return str_buffer;
}
var netscape = "";
ver = navigator.appVersion; len = ver.length;
for(iln = 0; iln < len; iln++) if (ver.charAt(iln) == "(") break;
netscape = (ver.charAt(iln+1).toUpperCase() != "C");

document.onkeydown = keyDown; // work together to analyze keystrokes
if (!document.all) document.captureEvents(Event.KEYDOWN);
var kDown;
function keyDown(DnEvents) {
  // Netscape o Internet Explorer
  kDown = (!document.all) ? DnEvents.which : window.event.keyCode;
}
function chkKey(){
	return kDown;
}

function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

function str2dt (str_datetime) {
	//var re_date = /^(\d+)\-(\d+)\-(\d+)\s+(\d+)\:(\d+)\:(\d+)$/;
	var re_date = /^(\d+)\/(\d+)\/(\d+)/;
	if (!re_date.exec(str_datetime))
		return alert("Date format invalid: "+ str_datetime);
	return (new Date (RegExp.$3, RegExp.$2-1, RegExp.$1, RegExp.$4, RegExp.$5, RegExp.$6));
}
function dt2dtstr (dt_datetime) {
	var day=dt_datetime.getDate();
    var month=(dt_datetime.getMonth()+1);
	month=(month<10)?'0'+month:month;
	day  =(day<10)?'0'+day:day;
	return (new String (
			day+"/"+month+"/"+dt_datetime.getFullYear()));
}
function dt2tmstr (dt_datetime) {
	return (new String (
			dt_datetime.getHours()+":"+dt_datetime.getMinutes()+":"+dt_datetime.getSeconds()));
}

function normalizeDate(str_date){
    return dt2dtstr(str2dt(str_date));
}

isIE=document.all;
isNN=!document.all&&document.getElementById;
isN4=document.layers;
isHot=false;
var ddEnabled=false;
function ddInit(e){
  topDog=isIE ? "BODY" : "HTML";
  whichDog=document.getElementById("container");
  hotDog=isIE ? event.srcElement : e.target;
  while (hotDog.id!="titleBar"&&hotDog.tagName!=topDog){
    hotDog=isIE ? hotDog.parentElement : hotDog.parentNode;
  }
  if (hotDog.id=="titleBar"){
    offsetx=isIE ? event.clientX : e.clientX;
    offsety=isIE ? event.clientY : e.clientY;
    nowX=parseInt(whichDog.style.left);
    nowY=parseInt(whichDog.style.top);
    ddEnabled=true;
    document.onmousemove=dd;
  }
}

function dd(e){
  if (!ddEnabled) return;
  whichDog.style.left=isIE ? nowX+event.clientX-offsetx : nowX+e.clientX-offsetx;
  whichDog.style.top=isIE ? nowY+event.clientY-offsety : nowY+e.clientY-offsety;
  return false;
}

function ddN4(whatDog){
  if (!isN4) return;
  N4=eval(whatDog);
  N4.captureEvents(Event.MOUSEDOWN|Event.MOUSEUP);
  N4.onmousedown=function(e){
    N4.captureEvents(Event.MOUSEMOVE);
    N4x=e.x;
    N4y=e.y;
  }
  N4.onmousemove=function(e){
    if (isHot){
      N4.moveBy(e.x-N4x,e.y-N4y);
      return false;
    }
  }
  N4.onmouseup=function(){
    N4.releaseEvents(Event.MOUSEMOVE);
  }
}

function check_date(field){
    var checkstr = "0123456789";
    var DateField = field;
    var Datevalue = "";
    var DateTemp = "";
    var seperator = "/";
    var day;
    var month;
    var year;
    var leap = 0;
    var err = 0;
    var i;
       err = 0;
       DateValue = DateField.value;
       for (i = 0; i < DateValue.length; i++) {
          if (checkstr.indexOf(DateValue.substr(i,1)) >= 0) {
             DateTemp = DateTemp + DateValue.substr(i,1);
          }
       }
       DateValue = DateTemp;
       if (DateValue.length == 6) {
          DateValue = DateValue.substr(0,4) + '19' + DateValue.substr(4,2); }
       if (DateValue.length != 8) {
          err = 19;}
       year = DateValue.substr(4,4);
       if (year == 0) {
          err = 20;
       }
       month = DateValue.substr(2,2);
       if ((month < 1) || (month > 12)) {
          err = 21;
       }
       day = DateValue.substr(0,2);
       if (day < 1) {
         err = 22;
       }
       if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0)) {
          leap = 1;
       }
       if ((month == 2) && (leap == 1) && (day > 29)) {
          err = 23;
       }
       if ((month == 2) && (leap != 1) && (day > 28)) {
          err = 24;
       }
       if ((day > 31) && ((month == "01") || (month == "03") || (month == "05") || (month == "07") || (month == "08") || (month == "10") || (month == "12"))) {
          err = 25;
       }
       if ((day > 30) && ((month == "04") || (month == "06") || (month == "09") || (month == "11"))) {
          err = 26;
       }
       if ((day == 0) && (month == 0) && (year == 00)) {
          err = 0; day = ""; month = ""; year = ""; seperator = "";
       }
       if (err == 0) {
          DateField.value = day + seperator + month + seperator + year;
       }
       else {
          alert("Date not valid!!");
          DateField.value="";
          DateField.focus();
       }
}

var dtCh= "/";
var minYear=1900;
var maxYear=2100;

function isInteger(s){
    var i;
    for (i = 0; i < s.length; i++){
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    return true;
}

function stripCharsInBag(s, bag){
    var i;
    var returnString = "";
    for (i = 0; i < s.length; i++){
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary (year){
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
    for (var i = 1; i <= n; i++) {
        this[i] = 31
        if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
        if (i==2) {this[i] = 29}
   }
   return this
}

function isDate(dtStr){
    var daysInMonth = DaysArray(12)
    var pos1=dtStr.indexOf(dtCh)
    var pos2=dtStr.indexOf(dtCh,pos1+1)
    var strMonth=dtStr.substring(pos1+1,pos2)
    var strDay=dtStr.substring(0,pos1)
    var strYear=dtStr.substring(pos2+1)
    strYr=strYear
    if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
    if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
    for (var i = 1; i <= 3; i++) {
        if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
    }
    month=parseInt(strMonth);
    day=parseInt(strDay);
    year=parseInt(strYr);
   if (pos1==-1 || pos2==-1){
        alert("Insert a date in the gg/mm/aaaa format");
        return false;
    }
    if (strMonth.length<1 || month<1 || month>12){
        alert("Insert a valid month");
        return false;
    }
    if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
        alert("Insert a valid day");
        return false;
    }
    if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
        alert("Insert 4 digit for the year  between "+minYear+" and "+maxYear);
        return false;
    }
    if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
        alert("Insert a valid date");
        return false;
    }
return true;
}

function ValidateDate(dt){
    return isDate(dt.value);
 }
//blocca cesso6
//document.onmousedown=ddInit;
document.onmouseup=Function("ddEnabled=false");
