//********* Calendar DHTML *********
//Author : Danilo Priore
//Email  : support@prioregroup.com
//URL    : http://www.prioregroup.com
//Created: 16 Ago 2004
//
// Updates Date		Author				Description
//----------------------------------------------------------------------
// 19 Ago 2004      Danilo Priore		fix rows visibility
//										add more language calendar
// 25 Ago 2004		Danilo Priore		fix japan show
// 02 Spt 2004		Danilo Priore		show current sys date in bold
//
//
//This code is written and distributed under
//the GNU General Public License which means
//that its source code is freely-distributed
//and available to the general public. 
//**********************************
//
// showCalendar(textbox,lang);
//
// use:
//		showCalendar('DataValue','US');
//
// name		description
// ------------------------------------------
// textbox	name of input type text to
//			valorize with selected date.
// lang     language of the calendar and
//			for date format (US, IT, JP).
//
// NOTE: use the charset iso-8859-15
//
//<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15">
//
// global for week and month names

var weeks=new Array();
var months=new Array();

function showCalendar(textbox,lang){
	
	var cal=document.getElementById("Calendar");
	
	if(cal!=null)cal.datetype=lang;
	
	var obj=document.getElementById(textbox);
	
	if(obj!=null){
		var txt=obj.value;
		// week and month names
		if(lang=="US"||lang=="us"){
			weeks=Array('sun','mon','tue','wed','thu','fri','sat');
			months=Array('JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC');

			//var month=txt.substring(0,2);
			//var year=txt.substring(6,10);

var j =0;
var month="0";
var totalslash=1;
var year=0;
if(txt.length <= 10)	
{//main check
for (i = 0; i <= txt.length; i++)
{
j=j+1;


if (txt.substring(j,i)!="/")
 {
  if (totalslash == 1)
    { 
      month= month+ txt.substring(j,i);  
      if(month.length == 3)
      {
        var temp =month
           month= month .substring(1,2);
        month= month+ temp.substring(2,3)
      }
   }
 if (totalslash == 3)
    { 
      year= year+ txt.substring(j,i);  

      if(year.length == 5)
      {
        var temp =year
           year= year.substring(1,5);
    
      }
   }

 }
else
 {
totalslash =totalslash +1
 }

 
}

		}	

}
else
{
month=current.getMonth;

year=current.getFullYear;
}

		showCalendarEx(year,month,textbox);
		

	}

}
// extended function
function showCalendarEx(year,month,textbox){
	// init calendar
	var today=new Date();
	if(parseInt(year)!=0&&year!=null&&year!=''&&parseInt(month)!=0&&month!=null&&month!=''){
		today.setFullYear(year,month-1)}
	fillCalendar(today.getMonth(),today.getFullYear());
	var tab=document.getElementById("tabMonths");
	// clear month list
	var m=tab.rows;
	if(m!=null){
		for(var r=m.length;r>-1;r--){
			try{
				tab.deleteRow(m(r).rowIndex);
			}catch(e){}
		}
	}
	// fill month list
	for(var i=0;i<months.length;i++){
		var row=tab.insertRow(-1);
		addEvent(row,"mouseover",doItemOver);
		addEvent(row,"mouseout",doItemOut);
		addEvent(row,"click",doMonthClick);
		// month number (first cell)
		var cell=row.insertCell(-1);
		cell.innerText=i+1;
		// month name (last cell)
		var cell=row.insertCell(-1);
		cell.innerText=months[i];
	}
	// fill year list (one time)
	var tab=document.getElementById("tabYear");
	var years=tab.rows;
	if(years!=null){
		if(years.length==0){
			for(var i=0;i<150;i++){
				var row=tab.insertRow(-1);
				addEvent(row,"mouseover",doItemOver);
				addEvent(row,"mouseout",doItemOut);
				addEvent(row,"click",doYearClick);
				var cell=row.insertCell(-1);
				cell.innerText=1910+i;
			}
		}
	}
	setCalendar(textbox);
}
// set calendar position from mouse position and show
function setCalendar(textbox){
	var a=document.getElementById("Calendar");
	if(a!=null){
		var sty=a.style;
		if(sty!=null){
			var e=window.event;
			
			a.textbox=textbox;
			sty.display='inline';
			
		}
	}
}
// fill table month/year/days
function fillCalendar(month,year){
	var tab=document.getElementById("tabCalendar");
	// clear clendar table
	var rows=tab.rows;
	if(rows!=null){
		for(var r=rows.length;r>-1;r--){
			try{
				tab.deleteRow(rows(r).rowIndex);
			}catch(e){}
		}
	}
	// month
	var m=document.getElementById("month");
	m.innerText=months[month];
	m.number=month;
	// year
	document.getElementById("year").innerText=year;
	// week names
	var tab=document.getElementById("tabCalendar");
	var row=tab.insertRow(-1);
	for(var i=0;i<weeks.length;i++){
		var cell=row.insertCell(-1);
		cell.innerText=weeks[i];
		if(i==0){
			var sty=cell.style;
			if(sty!=null) sty.color="#FF0000";
		}
	}
	

	
	// retrieve current system date
	var current=new Date();
	// retrieve first week
	var range=new Date();
	range.setFullYear(year,month,1);
	var start=range.getDay();
	
	// retrieve last day
	range.setMonth(range.getMonth()+1,1);
	range.setDate(1);
	range.setDate(range.getDate()-1);

	var max=range.getDate();
	
	// days
	var c=0;
	for(var r=0;r<6;r++){
		var row=tab.insertRow(-1);
		for(var i=0;i<7;i++){
			var cell=row.insertCell(-1);
			if((r==0&&i>=start)||(r>0&&c<max)){
				c++;
				cell.innerText=c;
				cell.align="right";
				addEvent(cell,"mouseover",doDayOver);
				addEvent(cell,"mouseout",doDayOut);
				addEvent(cell,"click",doDayClick);
				var sty=cell.style;
				if(sty!=null){
					// colored the last week day
					if(i==0) sty.color="#FF0000";
					// bold current system date
					if(c==current.getDate()&&month==current.getMonth()&&year==current.getYear()){
						sty.fontWeight="bold";
						sty.textDecoration="underline";
					}
				}
			}
		}
	}
}
// make color on mouse over
function doItemOver(){
	var cell=event.srcElement;
	if(cell!=null){
		var row=cell.parentElement;
		if(row!=null){
			var sty=row.style;
			if(sty!=null){
				sty.color="#FFFFFF";
				sty.background="#000080";
				sty.cursor="hand";
			}
		}
	}
}
// restore color on mouse out
function doItemOut(){
	var cell=event.srcElement;
	if(cell!=null){
		var row=cell.parentElement
		if(row!=null){
			var sty=row.style;
			if(sty!=null){
				sty.color="#000000";
				sty.background="#FFFFFF";
				sty.cursor="default";
			}
		}
	}
}
// show month list
function showMonths(){
	var month=document.getElementById("lstMonths");
	if(month!=null){
		var sty=month.style;
		if(sty!=null){
			sty.left=event.clientX-10;
			sty.top=event.clientY-10;
			sty.display="inline";
		}
	}
}
// show year list
function showYears(){
	var year=document.getElementById("lstYear");
	if(year!=null){
		var sty=year.style;
		if(sty!=null){
			sty.left=event.clientX-10;
			sty.top=event.clientY-10;
			sty.display="inline";
		}
	}
}
// hide list
function hideList(){
	var e=event.srcElement;
	if(e!=null){
		var sty=e.style;
		if(sty!=null) sty.display="none";
	}
}
// set new month
function doMonthClick(){
	var cell=event.srcElement;
	if(cell!=null){
		var row=cell.parentElement;
		var year=document.getElementById("year");
		if(row!=null&&year!=null){
			var cells=row.cells;
			if(cells!=null) fillCalendar(parseInt(cells(0).innerText)-1,year.innerText);
		}
	}
	var month=document.getElementById("lstMonths");
	if(month!=null){
		var sty=month.style;
		if(sty!=null) sty.display="none";
	}
}
// set new year
function doYearClick(){
	var e=event.srcElement;
	var month=document.getElementById("month");
	if(e!=null&&month!=null) fillCalendar(month.number,e.innerText);
	var year=document.getElementById("lstYear");
	if(year!=null){
		var sty=year.style;
		if(sty!=null) sty.display="none";
	}
}
// make color on mouse over for single day
function doDayOver(){
	var cell=event.srcElement;
	var sty=cell.style;
	if(sty!=null){
		sty.color="#FFFFFF";
		sty.background="#000080";
		sty.cursor="hand";
	}
}
// restore color on mouse out for single day
function doDayOut(){
	var cell=event.srcElement;
	if(cell!=null){
		var row=cell.parentElement;
		if(row!=null){
			var cells=row.cells;
			var sty=cell.style;
			if(sty!=null&&cells!=null){
				if(cell.innerText==cells(0).innerText){sty.color="#FF0000"
				}else{sty.color="#000000"}
				sty.background="#FFFFFF";
				sty.cursor="default";
			}
		}
	}
}
// previous month
function prevMonth(){
	var dt=new Date();
	var year=document.getElementById("year");
	var month=document.getElementById("month");
	if(year!=null&&month!=null) dt.setFullYear(year.innerText,month.number,1);
	
	dt.setMonth(dt.getMonth()-1,1);

	fillCalendar(dt.getMonth(),dt.getFullYear());
	
}
// next month
function nextMonth(){
	var dt=new Date();
	var year=document.getElementById("year");
	var month=document.getElementById("month");
	if(year!=null&&month!=null) dt.setFullYear(year.innerText,month.number,1);
	

	dt.setMonth(dt.getMonth()+1,1);
	
	fillCalendar(dt.getMonth(),dt.getFullYear());
}

// return date selected and hide calendar
function doDayClick(){
	var day=event.srcElement.innerText;
	//if (document.getElementById("month").number ==2)
	//{
	//	var month=document.getElementById("month").number;
	//}
	//else
	//{
		var month=document.getElementById("month").number+1;
	//}
	
	var year=document.getElementById("year").innerText;
	var a=document.getElementById("Calendar");
	var month_name=new Array();
	month_name=Array('','JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC');
	
		if(a!=null){
		if(day<10) day="0"+day;
		//if(month<10) month="0"+month; //disply in MM format
		
		    
	   	 	
		if(a.textbox!=" "){
			if(a.datetype=="US"||a.datetype=="us"){
				document.getElementById(a.textbox).value=day+"-"+month_name[month]+"-"+year;				
				//document.getElementById(a.textbox).value=month_name[1];	

			}
			closeCalendar();
		}
	}
}
// close calendar
function closeCalendar(){
	var a=document.getElementById("Calendar");
	if(a!=null){
		var sty=a.style;
		if(sty!=null) sty.display="none";
	}
	 
}
// add a event
function addEvent(obj,evname,func){
	try{
		obj.attachEvent("on"+evname,func);
	}catch(e){
		try{
			obj.addEventListener(evname,func,true);
		}catch(e){}
	}
}


//
// document html, calendar popup
var htm= "<div id=\"Calendar\" style=\"BORDER:#000000 2px solid;FONT-SIZE:12px;BACKGROUND:#ffffff;OVERFLOW auto;FONT-FAMILY:Verdana,Arial,Helvetica;POSITION:absolute;top:430px;left:200px;DISPLAY:none;Z-INDEX:200;FILTER:progid:DXImageTransform.Microsoft.Shadow(color=\"#000000\",Direction=135,Strength=6)\" textbox=\" \" datetype=\" \">";
htm+= "<table bgcolor=\"#295284\" border=\"0\" style=\"FONT-SIZE:12px;FONT-FAMILY:Verdana,Arial,Helvetica\">";
htm+= "<tr><td width=\"20px\"><input type=\"button\" value=&#9668; onclick=\"prevMonth()\" style=\"cursor:hand;font-weigh:bold;width:30px\"></td>";
htm+= "<td align=\"center\" width=\"90px\"><b><span id=\"month\" style=\"color:#FFFFFF;cursor:hand\" onclick=\"showMonths()\" number=\"0\">month</span></b></td>";
htm+= "<td align=\"center\" width=\"40px\"><b><span id=\"year\" style=\"color:#FFFFFF;cursor:hand\" onclick=\"showYears()\">year</span></b></td>";
htm+= "<td width=\"20px\"><input type=\"button\" value=&#9658; onclick=\"nextMonth()\" style=\"cursor:hand;font-weigh:bold;width:30px\"></td>";
htm+= "<td><input type=\"button\" value=\"x\" onclick=\"closeCalendar()\" style=\"cursor:hand;font-weigh:bold;width:20px\"></td></tr></table>";
htm+= "<table id=\"tabCalendar\" width=\"220px\" style=\"COLOR:#000000;FONT-SIZE:12px;FONT-FAMILY:Verdana,Arial,Helvetica\"><tbody></tbody></table>";
htm+= "</div>";
htm+= "<div id=\"lstMonths\" onmouseleave=\"hideList()\" style=\"WIDTH:120px;HEIGHT:130px;BORDER:#000000 2px solid;BACKGROUND:#ffffff;OVERFLOW:auto;FONT-SIZE:12px;FONT-FAMILY:Verdana,Arial,Helvetica;SCROLLBAR-FACE-COLOR:#295284;SCROLLBAR-SHADOW-COLOR:#003e68;SCROLLBAR-3DLIGHT-COLOR:#295284;SCROLLBAR-ARROW-COLOR:#f7efb5;SCROLLBAR-TRACK-COLOR:#cedef7;SCROLLBAR-DARKSHADOW-COLOR:#000000;SCROLLBAR-HIGTLIGHT-COLOR:#CEDEF7;POSITION:absolute;DISPLAY:none;Z-INDEX:201\"><table id=\"tabMonths\" border=\"0\" width=\"100%\" style=\"COLOR:#000000;FONT-SIZE:12px;FONT-FAMILY:Verdana,Arial,Helvetica\"></table></div>";
htm+= "<div id=\"lstYear\" onmouseleave=\"hideList()\" style=\"WIDTH:70px;HEIGHT:130px;BORDER:#000000 2px solid;BACKGROUND:#ffffff;OVERFLOW:scroll;FONT-SIZE:12px;FONT-FAMILY:Verdana,Arial,Helvetica;SCROLLBAR-FACE-COLOR:#295284;SCROLLBAR-SHADOW-COLOR:#003e68;SCROLLBAR-3DLIGHT-COLOR:#295284;SCROLLBAR-ARROW-COLOR:#f7efb5;SCROLLBAR-TRACK-COLOR:#cedef7;SCROLLBAR-DARKSHADOW-COLOR:#000000;SCROLLBAR-HIGTLIGHT-COLOR:#CEDEF7;POSITION:absolute;DISPLAY:none;Z-INDEX:201\"><table id=\"tabYear\" border=\"0\" width=\"100%\" style=\"COLOR:#000000;FONT-SIZE:12px;FONT-FAMILY:Verdana,Arial,Helvetica\"></table></div>";
document.write(htm);
