var DHTML = (document.getElementById || document.all || document.layers);

function getObj(name) {
	if (document.getElementById) {
		this.obj = document.getElementById(name);
	} else if (document.all)  {
		this.obj = document.all[name];
	} else if (document.layers)  {
		this.obj = document.layers[name];
	}
	return this.obj;
}

function objExist(name) {
	if (document.getElementById) {
		this.obj = document.getElementById(name);
	} else if (document.all)  {
		this.obj = document.all[name];
	} else if (document.layers)  {
		this.obj = document.layers[name];
	}
	if(this.obj) 
		return true;
	else 
		return false;
}

//if sText is in a combotion of numbers and slashed it is return
//if it isn't, then "" is returned
function IsDate(sText,default_date)
{
	var ValidChars = "0123456789/";
	var is_date=true;
	var Char;
	
	if(sText=="")	return default_date;
	
 
	for (i = 0; i < sText.length && is_date == true; i++) 
	{ 
		Char = sText.charAt(i); 
		if (ValidChars.indexOf(Char) == -1) 
		{
			is_date = false;
		}
	}
	
	
	if(is_date)
	{
		return sText;
	}
	else
	{
		return default_date;
	}
}


function divDsp(hideThis,dspState)
{
	if (!DHTML) return;
	var x = new getObj(hideThis);
	x.style.display = (dspState)? (dspState=='inline'?'':dspState) : (x.style.display=='inline'||x.style.display=='') ? 'none' : '';
}

function getCalendar(str_target,str_datetime, event) {
	//alert(event.length);
	thisObj 	= 'calcal';
	thisObj2 	= 'iframe1';
	
	//if(str_datetime==null)	str_datetime=Date();
	//alert(str_target.value);
	
	if (!objExist(thisObj)) return;
	var x = new getObj(thisObj);
	
	if (!(x.style.display=='inline' || x.style.display=='')) {
		x.style.display = 'inline';
	}
	
	if (!objExist(thisObj2)) return;
	var z = new getObj(thisObj2);
	
	if (!(z.style.display=='inline' || z.style.display=='')) {
		z.style.display = 'inline';
	}
	
	x.style.position="absolute";
	z.style.position="absolute";
	//alert(event);
	if(event) {	
	
		if (navigator.appName=="Netscape") {
		       showX = (event.pageX);
		       showY = (event.pageY);
		} 
		else 
		{
			    showX = (event.clientX);
		        showY = (event.clientY)+document.body.scrollTop;
		}
					
		x.style.left = showX+"px";
		x.style.top = showY+"px";
		
		z.style.left = showX+"px";
		z.style.top = showY+"px";
		
    z.style.width = 220;
    /*z.style.height = x.offsetHeight;
    z.style.top = x.style.top;
    z.style.left = x.style.left;*/
    z.style.zIndex = x.style.zIndex - 1;

}
	
//Sub functions javascript 1.2 only
	function str2Date(mmddyyyy){ mmddyyyy = mmddyyyy.split("/"); return (new Date(mmddyyyy[2], eval(mmddyyyy[0]-1), mmddyyyy[1]) )}
	function date2Str(date){return ( (date.getMonth()+1)+"/"+date.getDate()+"/"+date.getFullYear()+"" ) }	
	function year_dropdown(default_year) {
			today = new Date();	year = today.getFullYear(); var dt_here = new Date(dt_datetime);
			if(default_year=="" || isNaN(default_year)) default_year = year;
			var	year_dropdown		= "";
		 	year_dropdown += '<select onchange="'+function_name+'(\''+str_target+'\', this.value)" style="background-color:'+color1+'; color:ffffff; font:bold 11px '+textFont+';">\n';
			
			if(default_year>end_year){	year_dropdown	+= "\t<option value=\""+((dt_here.getMonth()+1)+"/"+dt_here.getDate()+"/"+default_year)+"\" selected>"+default_year+"</option>\n"	}
			for (var iYear=end_year; iYear>=start_year; iYear--) {
				if (iYear == default_year){selected = "selected"}else{selected = ""}
				year_dropdown	+= "\t<option value=\""+((dt_here.getMonth()+1)+"/"+dt_here.getDate()+"/"+iYear)+"\" "+selected+">"+iYear+"</option>\n"
			}
			if(default_year<start_year){	year_dropdown	+= "\t<option value=\""+((dt_here.getMonth()+1)+"/"+dt_here.getDate()+"/"+default_year)+"\" selected>"+default_year+"</option>\n"	}
			year_dropdown += "</select>\n";
			return year_dropdown;
	}
	
	function month_dropdown(default_month) {
		var dt_here = new Date(dt_datetime);
		month_dropdown = '';
			 month_dropdown += '<select onchange="'+function_name+'(\''+str_target+'\', this.value)" style="background-color:'+color1+'; color:ffffff; font:bold 11px '+textFont+';">';
			 for (var iMonth=0; iMonth<arr_months.length; iMonth++) {
				if (iMonth == default_month){selected = "selected"}else{selected = ""}
				month_dropdown += '<option value="'+((iMonth+1)+'/'+dt_here.getDate()+'/'+dt_here.getFullYear())+'" '+selected+'>'+arr_months[iMonth]+'</option>';
			}
				
			 month_dropdown += '</select>';
			return month_dropdown;
	}
	
	var function_name		= "getCalendar"
	var	todayIs				= new Date();
	//var arr_months 			= ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
	var arr_months 			= ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
	var arr_months_num 		= ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'];
	var week_days 			= ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"];
	var start_year			= (todayIs.getFullYear()-65);
	var end_year			= (todayIs.getFullYear()+2)
	var n_weekstart 		= 0; // day week starts from (normally 0 or 1)
	//dates
	var dt_datetime 		= (str_datetime == null || str_datetime =="" ?  new Date() : str2Date(str_datetime));
	var dt_prev_month 		= new Date(dt_datetime);	dt_prev_month.setMonth(dt_datetime.getMonth()-1);
	var dt_prev_year 		= new Date(dt_datetime);	dt_prev_year.setMonth(dt_datetime.getMonth()-12);
	var dt_next_month 		= new Date(dt_datetime); 	dt_next_month.setMonth(dt_datetime.getMonth()+1);
	var dt_next_year 		= new Date(dt_datetime); 	dt_next_year.setMonth(dt_datetime.getMonth()+12);
	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);
	//Colors
	var color1				= '#6b9ec6';
	var color2				= '#ddebf4';
	var color3				= '#ffffff';
	var todayColor			= '#ffd700';
	var dayHoverColor		= '#ffd700';
	var dayHoverBorderColor	= '#000000';
	var textFont			= 'tahoma,sans-serif';
	var weekdayHeader		= 'text-align:right;'; //background-color:808080; color:ffffff; font:bold 11px;

	// html generation (feel free to tune it for your particular application)
	var str_buffer = new String (
				'<div style="width: 230px; background-color: #c0c0c0; padding: 0px 1px 2px 1px;">'+
				'<table width="100%" border="0" cellspacing="0" cellpadding="0" bgcolor="'+color1+'">'+
				'<tr bgcolor="#808080" style="border-top: 1px solid #000000;border-bottom: 1px solid #000000;"><td colspan=2 align=right style="color:white; font: small-caps bold 14px '+textFont+';"> <a href="javascript://" onclick="var x = new getObj(\''+thisObj+'\'); x.innerHTML=\'\'; divDsp(\''+thisObj+'\',\'none\'); divDsp(\''+thisObj2+'\',\'none\');" style="border: 1px solid #ffffff; color:ffffff; font: normal bold 12px '+textFont+'; text-decoration: underline;">&nbsp;X&nbsp;</a></td></tr>'+ //&nbsp;|&nbsp;<a href="#" onclick="if('+str_target+'){'+str_target+'.value=\'\';} var x = new getObj(\''+thisObj+'\'); x.innerHTML=\'\'; divDsp(\''+thisObj+'\',\'none\'); divDsp(\''+thisObj2+'\',\'none\');" style="color:ffffff; font: small-caps bold 11px '+textFont+'; text-decoration: underline;">clear</a>&nbsp;
				'<tr><td align=left nowrap style="background-color:'+color1+'; padding: 5px 5px 5px 5px; color:ffffff; font: small-caps bold 14px '+textFont+';">'+
				'	<a href="javascript:'+function_name+'(\''+str_target+'\', \''+ date2Str(dt_prev_month)+'\');" style=" padding: 0px 0px 5px 5px; color:white; font: small-caps bold 14px '+textFont+';">&laquo;</a>'+
				' '+ month_dropdown(dt_datetime.getMonth())+
				'	<a href=\"javascript:'+function_name+'(\''+str_target+'\', \''+date2Str(dt_next_month)+'\');" style="padding: 0px 5px 5px 0px; color:white; font: small-caps bold 14px '+textFont+';">&raquo;</a>'+
				'</td><td align=right>'+
				'	<a href="javascript:'+function_name+'(\''+str_target+'\', \''+ date2Str(dt_prev_year)+'\');" style=" padding: 0px 0px 5px 5px; color:white; font: small-caps bold 14px '+textFont+';">&laquo;</a> '+
				' '+ year_dropdown(dt_datetime.getFullYear())+
				'	<a href="javascript:'+function_name+'(\''+str_target+'\', \''+ date2Str(dt_next_year)+'\');" style="padding: 0px 5px 5px 0px; color:white; font: small-caps bold 14px '+textFont+';">&raquo;</a> '+
				'</td></tr></table>'+
				'<table width="100%" border="0" cellspacing="0" cellpadding="1" bgcolor="c0c0c0">');
				
	var dt_current_day 		= new Date(dt_firstday);
	// print weekdays titles
	str_buffer 				+= "<tr>\n";
	for (var n=0; n<7; n++) { str_buffer += '<th align="center" style="'+weekdayHeader+';">'+week_days[(n_weekstart+n)%7]+'</th>'; }
	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 style="background-color:f5f5f5; color:white; font:bold 11px '+textFont+';">';
			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())
					// Today 
					str_buffer 	+= ' <td style="background-color:'+todayColor+'; border: 1px solid '+todayColor+'; color:#000000; font:bold 11px '+textFont+';" align="right" onmouseover="this.style.backgroundColor=\''+dayHoverColor+'\'; this.style.borderColor=\''+dayHoverBorderColor+'\';" onmouseout="this.style.backgroundColor=\''+todayColor+'\'; this.style.borderColor=\''+todayColor+'\';" >';
				else if (dt_current_day.getDay() == 0 || dt_current_day.getDay() == 6)
					// Sat + Sun
					str_buffer 	+= ' <td style="background-color:'+color2+'; border: 1px solid '+color2+'; color:#000000; font:bold 11px '+textFont+';" align="right" onmouseover="this.style.backgroundColor=\''+dayHoverColor+'\'; this.style.borderColor=\''+dayHoverBorderColor+'\';" onmouseout="this.style.backgroundColor=\''+color2+'\'; this.style.borderColor=\''+color2+'\';" >';
				else
					// Mon -  Fri
					str_buffer 	+= ' <td style="background-color:'+color3+'; border: 1px solid '+color3+'; color:000000; font:bold 11px '+textFont+';" align="right" onmouseover="this.style.backgroundColor=\''+dayHoverColor+'\'; this.style.borderColor=\''+dayHoverBorderColor+'\';" onmouseout="this.style.backgroundColor=\''+color3+'\'; this.style.borderColor=\''+color3+'\';">';

					if (dt_current_day.getMonth() == dt_datetime.getMonth())
						// Days of current month
						str_buffer 	+= 	'<a href="javascript:if('+str_target+'){'+str_target+'.value=\''+date2Str(dt_current_day)+'\';} divDsp(thisObj,\'none\'); divDsp(thisObj2,\'none\'); '+str_target+'.focus();" onMouseOver="self.status=\''+date2Str(dt_current_day)+'\'; return true" onMouseout="self.status=\'\'; return true" style="padding: 0px 0px 0px 14px; color:000000; font: 11px '+textFont+';">'; 
					else 	
						// Days of other months
						str_buffer 	+= 	'<a href="javascript:if('+str_target+'){'+str_target+'.value=\''+date2Str(dt_current_day)+'\';} divDsp(thisObj,\'none\'); divDsp(thisObj2,\'none\'); '+str_target+'.focus();" onMouseOver="self.status=\''+date2Str(dt_current_day)+'\'; return true" onMouseout="self.status=\'\'; return true" style="padding: 0px 0px 0px 14px; color:778899; font: 11px '+textFont+';">'; 
						
						
						str_buffer 	+= dt_current_day.getDate()+"</a></td>\n";
						dt_current_day.setDate(dt_current_day.getDate()+1);
			}
			// print row footer
			str_buffer 	+= "</tr>\n";
		}
		
		// print calendar footer
		str_buffer 		+=	"<form name=\"cal\">\n<tr><td colspan=\"7\" bgcolor=\"#87CEFA\">"+
							"<!--Time: ---><input type=\"hidden\" name=\"time\" value=\""+date2Str(dt_datetime)+
							"\" size=\"8\" maxlength=\"8\"></td></tr>\n</form>\n" +
							"</form></table>\n" +
							"</div>";
		
		x.innerHTML = str_buffer;
		//return;
	}
	document.write('<iframe id="iframe1" src="javascript:false;" scrolling="no" frameborder="0" style="display:none;"></iframe><div id="calcal" style="z-index:100; display:none;">calendar</div>');
	